这不是我第一次将Json反序列化为c#类,但是当这些Json具有嵌套列表时,我遇到了一些麻烦。这是workOrders列表的返回Json:
[
{
"_id": "5cacdda0b4e6d128a61187ca",
"taskInstance": [
{
"_id": "5cacdda0b4e6d128a61187cc"
}
],
"isRunning": false
},
{
"_id": "5cacebb0b4e6d128a61187d1",
"taskInstance": [
{
"_id": "5cacebb0b4e6d128a61187d3"
}
],
"isRunning": false
}
]
,这里是C#类: 工作订单
public class WorkOrder{
public string Id { get; set; }
public List<TaskInstance> TaskInstances { get; set; }
public string IsRunning { get; set; }
}
和TaskInstance
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 [“ data”] )中的原始 data 看起来像这样:
{
"data": {
"workOrderInstances": [
{
"_id": "5cacdda0b4e6d128a61187ca",
"taskInstance": [
{
"_id": "5cacdda0b4e6d128a61187cc"
}
],
"isRunning": false
},
...
]
}
}
答案 0 :(得分:0)
使用此模型:
因为您的模型存在以下问题: 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; }
}
让我知道它是否对您有用。