2017-12-11 2 views
0

私の質問は、テキストコンポーネントに特定の値を入れるときにエラーが発生するJSONファイルについてです。JSONファイルからすべてのappIDを収集

{ 
"response": { 
    "game_count": 4, 
    "games": [ 
     { 
      "appid": 10, 
      "playtime_forever": 0 
     }, 
     { 
      "appid": 20, 
      "playtime_forever": 0 
     }, 
     { 
      "appid": 30, 
      "playtime_forever": 0 
     }, 
     { 
      "appid": 40, 
      "playtime_forever": 0 
     } 
    ] 

    } 
} 

私は、リッチテキストボックスで「APPID」から値を取得するために、他の下の1を「10,20,30,40」をしようとしています。このために、私はこのコードを使用しています:

JsonString = file 

     Dim jsonObject As JObject = JObject.Parse(JsonString) 
     Dim JsonArray As JArray = JArray.Parse(jsonObject.SelectToken("games").ToString) 
     For Each item As JObject In JsonArray 
      RichTextBox2.Text = item.SelectToken("appid").ToString 

     Next 

をしかし、私は上記のコードの行4で、次のエラーを取得しています:

オブジェクト参照オブジェクトのインスタンスに設定されていない

これを修正する方法はありますか?私は自分のコードが正しいと信じています。私はNewtonSoftライブラリを使用しています。

+0

[NullReferenceExceptionとは何ですか?それを修正するにはどうすればいいですか?](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix -it) –

+0

なぜ2回解析する必要があると思いますか? [お問い合わせ]を読んで[ツアー]を取ってください – Plutonix

答えて

0

あなたは".."JSONPath再帰下降演算子である場合には、再帰的にJSONトークン階層を降下し、"appid"名前付きプロパティの値を見つけるためにSelectTokens("..appid")を使用することができます。私はその後、キャストすべて"appid"値を見つけた後

Dim jsonObject As JToken = JToken.Parse(JsonString) 
Dim appids = jsonObject _ 
    .SelectTokens("..appid") _ 
    .Select(Function(t) CType(t, Long)) _ 
    .ToList() 

を使用してLongIntにキャストすることができます。appidの値がすべてInt.MaxValue未満になることが確実であればキャストできます。数値に興味がない場合は、Stringにキャストすることもできます。

作業.Net fiddle

+0

ありがとう!私は研究を改善するためにコードを使用します:D – toxdotnet

+0

@toxdotnet - 喜んで助けてください。質問に答えるには、[それをそのようにマークする](https://meta.stackexchange.com/q/147531/344280)をしてください。 – dbc

関連する問題