我受到Web3新安全措施的限制,只能对Unity3d播放器应用程序使用LitJson,否则它将无法编译。
有没有一种简单的方法可以将输出序列化为对象(userEcoGet.text的内容):
{"building_id":"1","building_level":"0","workers":"0","building_health":"100"}{"building_id":"2","building_level":"0","workers":"0","building_health":"100"}...{"building_id":"32","building_level":"0","workers":"0","building_health":"100"}这段代码只输入来自JSON的第一个对象:
using UnityEngine;
using System.Collections;
using LitJson;
...
public EcoData localEcoData;
...
localEcoData = JsonMapper.ToObject<EcoData>(userEcoGet.text);
...
public class EcoData
{
public string building_id;
public string building_level;
public string workers;
public string building_health;
}将localEcoData转换为数组会导致缺少构造函数错误。我只是不知道在这种情况下如何正确地嵌套构造函数,甚至不确定它是否会有帮助。
在这一点上,我求助于使用JsonReader并手动填充对象。任何帮助都将不胜感激。谢谢。
编辑:这太疯狂了,今天就因为我强加给自己的一个糟糕的JSON格式而被杀了一整天……
现在可以很好地工作了,localEcoData1,2...32是一个对象数组,所有元素都可以访问:
public EcoData[] localEcoData;
...
localEcoData = JsonMapper.ToObject<EcoData[]>(userEcoGet.text);我所要做的就是在PHP页面上正确地编写JSON,它会处理MySql,并以有序的方式传输回Unity。我没有使用数组进行传输,而是直接回显。现在,输出看起来像这样,并且工作得很好:
[{"building_id":"1","building_level":"0","workers":"0","building_health":"100"}{"building_id":"2","building_level":"0","workers":"0","building_health":"100"}...{"building_id":"32","building_level":"0","workers":"0","building_health":"100"}]谢谢你,伙计!
发布于 2011-02-10 05:29:10
我怀疑问题出在JSON本身。格式不正确。要将其解析为JSON数组,您需要将其格式化为:
{
result:[
{"building_id":"1","building_level":"0","workers":"0","building_health":"100"},
{"building_id":"2","building_level":"0","workers":"0","building_health":"100"},...
{"building_id":"32","building_level":"0","workers":"0","building_health":"100"}
]
}如果您无法控制JSON,那么您可能需要拆分字符串,并将每个字符串视为单个JSON对象,并将数组中的每个元素转换为您的C#对象类型。
https://stackoverflow.com/questions/4950206
复制相似问题