这不是我第一次将 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] 删除。
我来说两句