使用 LitJson 在 C# 中反序列化 JSON 对象数组 [重复]

Posted

技术标签:

【中文标题】使用 LitJson 在 C# 中反序列化 JSON 对象数组 [重复]【英文标题】:Deserialize JSON object array in C# using LitJson [duplicate] 【发布时间】:2011-06-24 10:14:18 【问题描述】:

Unity3d 3 新的安全措施限制我将 LitJson 用于 Web Player 应用程序,否则将无法编译。

有没有一种简单的方法可以将此输出序列化为对象(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 格式而被杀死......

现在完美运行,localEcoData[1,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"]

谢谢,伙计!

【问题讨论】:

【参考方案1】:

我怀疑问题出在您的 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# 对象类型。

【讨论】:

以上是关于使用 LitJson 在 C# 中反序列化 JSON 对象数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中反序列化多个 JSON 对象?

在 C# 中序列化为 JSON 并在 TS 中反序列化

如何在 C# 中反序列化具有属性的 XML [重复]

在 C# 中反序列化贝宝响应的正确方法

在 C# 中反序列化复杂对象

在 C# 中反序列化 JSON 数组