【发布时间】:2016-01-11 17:04:02
【问题描述】:
我有一个 Json 文件,其中包含父级中的多个列表对象。在我的例子中,父对象是一个名为 data 的列表。在数据中,我有几个包含数据的元素,例如名称、状态、标题...嵌套在每个元素中的是另一个名为“类别”的列表,我使用此处显示的代码 sn-p 将这些元素的值写入一个类:
var dict = jss.Deserialize<Dictionary<string, dynamic>>(json);
for (int i = 0; i < dict.Values.Sum(x => x.Count); i++)
{
foreach (var item in dict)
{
eSummary summary = new eSummary();
summary.evidenceId = (dict["data"][i]["evidenceId"]);
summary.idExternal = (dict["data"][i]["idExternal"]);
//summary.category = (dict["data"][i]["categories"][0]);
summary.dateUploaded = Convert.ToDateTime((dict["data"][i]["dateUploaded"]));
}
}
在我到达类别列表中没有值对的记录之前,一切都很好。显然,如果类别列表中没有元素,则该列表不包含在 json 父数据中,并且我的代码在我已注释掉的行上崩溃了。
所以我的问题是如何处理父列表中缺少列表对象的情况??
现在我正在处理一个 try catch 块,catch 块中没有任何内容,但我想一定有更好的方法。
【问题讨论】:
-
请参阅"Should questions include “tags” in their titles?",其中的共识是“不,他们不应该”!
-
好的,谢谢,下次我发问题时我会记住的
-
您应该首先检查类别是否为空,如果是,请在这种情况下设置您想要的默认值。所以如果例如如果父数据中没有类别列表,您希望将类别设置为“”,您可以写:
summary.category = dict["data"][i]["categories"] == null ? "" : dict["data"][i]["categories"][0] -
我试过了,但是代码崩溃了。问题是如果类别为空,则父元素不包括类别对象。所以我无法检查特定元素中不存在的对象的状态。