【问题标题】:How to handle a missing nested List within a Json which containing multiple lists如何处理包含多个列表的 Json 中缺少的嵌套列表
【发布时间】: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]
  • 我试过了,但是代码崩溃了。问题是如果类别为空,则父元素不包括类别对象。所以我无法检查特定元素中不存在的对象的状态。

标签: c# json list


【解决方案1】:

我使用 try catch 块处理了这个问题,如下所示:

try
{
  Data.Category = (dict["data"][i]["categories"][0]);
}
catch (Exception)
{
   Data.Category = "";
}

【讨论】:

    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多