json.net检查孩子是否存在

时间:2012-05-18 17:04:37

标签: json json.net

我有一些json并使用json.net解析内容。首先,我使用JToken并将帖子中的字段拆分为对象列表,然后从每个对象中读取值。问题是这些对象中的一些有时会有字段,有时候并不确定如何防止调用nullexception错误。这是json样本:

{"id": "dfdksfjaisdfdsjfksdjdfsdafernd"}
{"body": "test data for parsing"}
{"object": { "summary":"hello test data you trouble maker", "id" :"problem stuff",
             "link": "http://testdata.com",
             "objecttype": "link"
}}
{"user": { "name": "Joe Somebody", "age":"43", "location": { "name": "outer space"},
         }
}

现在在某些帖子中,位置字段不存在于用户对象中,导致我的代码中出现空错误,如下所示,有时候对象对象的格式如下:

  {"id": "dfdksfjaisdfdsjfksdjdfsdafernd"}
  {"body": "test data for parsing"}
  {"object": { "object": 
             {"summary":"hello test data you trouble maker", "id" :"problem stuff",
             "link": "http://testdata.com",
             "objecttype": "link"
         }
  }}
  {"user": { "name": "Joe Somebody", "age":"43",
           }
  }

现在如果我的代码如下:

       Dim results As List(Of JToken) = jobj.Children().ToList

        If results.Count = 0 Then
            Exit Sub
        End If

        For Each item As JProperty In results
            item.CreateReader()
            If item.Name = "id" Then
                id = item.Value
            End If
            If item.Name = "actor" Then
                author = item.Value("name").ToString
                location = item.Value("location").Item("name").ToString
                age = item.Value("age").ToString
            End If
            If item.Name = "object" Then
               htext = item.Value("summary").ToString
               csubject = item.Value("objectType").ToString
            End If
     Next

然后,如果位置和对象不同,则此代码将不起作用。那么如何检查位置字段是否存在,以及对象路径是否与摘要字段之前的其他对象不同。

编辑:

好的以为我用

搞清楚了
 If Not item.Value("location") Is Nothing Then
  bla bla bla

1 个答案:

答案 0 :(得分:-1)

好吧我猜它确实有效,并且来自illformed json的null异常:

 If Not item.Value("location") Is Nothing Then
  bla bla bla

和对象

相同
 If Not item.Value("summary") Is Nothing Then
   bla bla bla
  else
     htext = item.Value("object").Item("summary").tostring
相关问题