【问题标题】:Check if JSON response field is null检查 JSON 响应字段是否为空
【发布时间】:2017-02-16 14:29:12
【问题描述】:

我正在从 Facebook 检索用户字段,如下所示:

【问题讨论】:

  • 在尝试通过索引访问内部数据之前,您需要检查myInfo.education[0].concentration 是否存在。
  • 看起来这就是问题所在!谢谢!

标签: c# json parsing


【解决方案1】:

这将是使用null conditional operator 的好地方:

if (myInfo.education[0]?.concentration[0]?.name != null)

如果education[0]concentration[0] 为空,它将跳过链的其余部分。

【讨论】:

  • 看来问题是我试图访问不存在的东西的第一个索引 (education[0].concentration[0])
【解决方案2】:

我认为你正在寻找的是

(myInfo.education[0]?.concentration[0]?.name != null)

但我相信只有当属性实际上在对象上时它才会起作用,即 json 部分没有丢失。如果教育根本不在对象上,我认为这仍然会爆炸。

我的意思是

{ "id": "757111564344608", “教育”: [], “图片”:{

可以,但是

{ "id": "757111564344608", “图片”:{

会抛出异常。唯一可能更进一步的方法是

public dynamic myInfo;
  myInfo = fb.Get("/me?...........
  Type type = myInfo.GetType();
  foreach (var pi in type.GetProperties())
      {
        if (pi.Name.ToLower() == "education")
          {
            var val = pi.GetValue(myInfo).type;
            //do stuff to get child elements based on value
          }
      }

GetValue 行可能需要更改,您可能需要遍历 Education 的属性才能找到“类型”

【讨论】:

    猜你喜欢
    • 2012-12-13
    • 2015-12-24
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2021-08-12
    • 2012-02-21
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多