首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LitJson在C#中反序列化JSON对象数组

使用LitJson在C#中反序列化JSON对象数组
EN

Stack Overflow用户
提问于 2011-02-10 04:40:57
回答 1查看 9.1K关注 0票数 1

我受到Web3新安全措施的限制,只能对Unity3d播放器应用程序使用LitJson,否则它将无法编译。

有没有一种简单的方法可以将输出序列化为对象(userEcoGet.text的内容):

代码语言:javascript
复制
{"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的第一个对象:

代码语言:javascript
复制
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是一个对象数组,所有元素都可以访问:

代码语言:javascript
复制
public EcoData[] localEcoData;
...
localEcoData = JsonMapper.ToObject<EcoData[]>(userEcoGet.text);

我所要做的就是在PHP页面上正确地编写JSON,它会处理MySql,并以有序的方式传输回Unity。我没有使用数组进行传输,而是直接回显。现在,输出看起来像这样,并且工作得很好:

代码语言:javascript
复制
[{"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"}]

谢谢你,伙计!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-10 05:29:10

我怀疑问题出在JSON本身。格式不正确。要将其解析为JSON数组,您需要将其格式化为:

代码语言:javascript
复制
{
    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#对象类型。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4950206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档