1

私はいくつかの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"},
         }
}

現在、いくつかの投稿では、場所フィールドがユーザーオブジェクトに存在しないため、以下に示すようにコードでnullエラーが発生し、オブジェクトオブジェクトが次のように異なる形式になる場合もあります:

  {"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

次に、場所とオブジェクトが異なる場合、このコードは機能しません。そのため、場所フィールドが存在するかどうか、およびオブジェクト パスがサマリー フィールドの前に別のオブジェクトと異なるかどうかを確認するにはどうすればよいでしょうか。

編集:

OK、私はそれを理解したと思った

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

1 に答える 1

-1

わかりました、私はそれがうまくいったと思います、そして不正な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
于 2012-05-18T17:27:22.087 に答える