2017-02-16 103 views
0

我检索用户的字段从Facebook,像这样:检查JSON响应字段为空

+1

您需要检查是否'myInfo.education [0] .concentration'存在,然后尝试通过索引访问数据。 – CBroe

+0

看起来像是这个问题!谢谢! – crystyxn

回答

3

这将是一个很好用的地方null conditional operator

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

如果education[0]concentration[0]为null,它会跳过链条的其余部分。

+0

看来问题出在我试图访问不存在的东西的第一个索引(education [0] .concentration [0]) – crystyxn

0

我想你在找什么是

(myInfo.education [0] ?.浓度[0] ?.名字!= NULL)

,但我相信它只会如果物业工作实际上是在对象上,即json部分不会丢失。如果教育不在对象之内,我认为这仍会爆炸。

我的意思是

{ “ID”: “757111564344608”, “教育”:[], “图片报”:{

会的工作不错,但

{ “id”:“757111564344608”, “picture”:{

会抛出异常。只有这样,才能可能采取进一步的

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行可能需要改变,你可能需要通过教育的属性迭代找到“类型”