如何使用嵌套列表反序列化 Json

朱阿

这不是我第一次将 Json 反序列化为 c# 类,但是当这些 Json 具有嵌套列表时,我遇到了一些麻烦。这是返回的工作订单列表的 Json:

[
  {
    "_id": "5cacdda0b4e6d128a61187ca",
    "taskInstance": [
      {
        "_id": "5cacdda0b4e6d128a61187cc"
      }
    ],
    "isRunning": false
  },
  {
    "_id": "5cacebb0b4e6d128a61187d1",
    "taskInstance": [
      {
        "_id": "5cacebb0b4e6d128a61187d3"
      }
    ],
    "isRunning": false
  }
]

这里是 C# 类:WorkOrder

public class WorkOrder{
    public string Id { get; set; }
    public List<TaskInstance> TaskInstances { get; set; }
    public string IsRunning { get; set; }
}

和任务实例

public class TaskInstance{
    public string Id { get; set; }
}

这是我用来检查结果的代码:

JObject jsonResponse = JObject.Parse(data["data"].ToString());
string workOrderJson = jsonResponse["workOrderInstances"].ToString();
List<WorkOrder> wos = JsonConvert.DeserializeObject<List<WorkOrder>>(workOrderJson);

foreach (WorkOrder wo in wos){
    Debug.Log("WO _id: " + wo.Id);
    Debug.Log("wo.TaskInstances: "+ wo.TaskInstances);
    Debug.Log("WO isRunning: " + wo.IsRunning);
}

虽然我看到 WO._id 和 WO.isRunning wo.TaskInstances 的正确值似乎正在返回 null 或至少在我尝试访问它时抛出一个 null 引用异常。

我之前搜索过其他主题,但似乎没有一个解决方案有效。我不确定我错过了什么。感谢您的帮助。

免责声明:原始数据JObject.Parse(数据[“数据”]如下所示:

{
  "data": {
    "workOrderInstances": [
      {
        "_id": "5cacdda0b4e6d128a61187ca",
        "taskInstance": [
          {
            "_id": "5cacdda0b4e6d128a61187cc"
          }
        ],
        "isRunning": false
      },
      ...
     ]
  }
}
希特什·安沙尼

使用这个模型:

因为您的模型的问题是:您的代码中的 JSON 属性名称和模型属性名称不相同。

因此,每当您在属性使用中需要自己的自定义名称时
[JsonProperty("JsonPropertyName")]

 public partial class Root
    {
        [JsonProperty("_id")]
        public string Id { get; set; }

        [JsonProperty("taskInstance")]
        public TaskInstance[] TaskInstances { get; set; }

        [JsonProperty("isRunning")]
        public bool IsRunning { get; set; }
    }

    public partial class TaskInstance
    {
        [JsonProperty("_id")]
        public string Id { get; set; }
    }

请让我知道这对你有没有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用嵌套对象列表反序列化json

如何使用GSON反序列化嵌套的JSON数组?

如何使用DataContractJsonSerializer反序列化嵌套的json?

在C#中使用嵌套列表反序列化JSON数组对象

使用变量属性名称和嵌套列表反序列化JSON对象

在C#中使用嵌套列表反序列化JSON

如何反序列化复杂的嵌套JSON?

如何使用 System.Text.Json 序列化/反序列化非枚举类型的嵌套字典?

使用多层嵌套反序列化JSON

无法使用Retrofit反序列化嵌套JSON(Android)

Django使用嵌套字典反序列化JSON请求

无法使用列表中的列表反序列化 JSON

反序列化嵌套的Json数组

难以反序列化嵌套JSON

反序列化嵌套JSON

嵌套JSON的Unity反序列化

JSON反序列化嵌套响应

如何使用 Newtonsoft.Json 正确反序列化数组中的嵌套对象?

如何使用JSON.parse反序列化嵌套缓冲区

如何通过NewtonSoft反序列化对象json列表?

如何反序列化无效的json?截断的对象列表

您如何使用newtonsoft JSON反序列化器反序列化Geopoint?

如何在我的kafka使用者中使用对象反序列化json列表?

如何在 JSON.NET 中反序列化具有嵌套对象列表的对象列表?

反序列化 JSON 数组与列表

如何将嵌套的哈希表序列化/反序列化为JSON?

如何使用实体类反序列化列表 JSON?

当请求正文是列表或对象时,如何使用 RestTemplate 反序列化 JSON?

如何将json文件反序列化回其序列化的通用列表?