2017-10-02 14 views
0

私はJArrayをループしようとしていますが、私のfor/nextループの中にmsgがエラーとして宣言されていません。ここで NewtonSoft JSON Loop Through JArray

{ "messages":[ 
     { 
     "id": 123456789, 
     "sender_id": 1236547890, 
     "replied_to_id": null, 
     "created_at": "2017/09/28 15:49:20 +0000", 
     "network_id": 554477, 
     "message_type": "update", 
     "sender_type": "user", 
     "url": "https://www.example.com", 
     "web_url": "https://www.example.com/123456789", 
     "group_id": 7418529, 
     "body": { 
      "urls": [ 
      "https://www.facebook.com/blah/blah/blah", 
      "https://google.com/foo/bar" 
      ], 
      "parsed": "Sem, imperdiet voluptatibus. Molestias, gravida vehicula, irure suscipit. Dis facilisi laudantium recusandae necessitatibus dolor quaerat quisque! Lectus deserunt taciti magnis, a non eligendi similique? Exercitationem eius corporis. Faucibus eiusmod delectus voluptatum nascetur, alias doloremque sagittis, repellendus laudantium quae, iaculis, cras maecenas fusce suspendisse amet magnam nulla gravida mollis, tempora gravida", 
      "plain": "Sem, imperdiet voluptatibus. Molestias, gravida vehicula, irure suscipit. Dis facilisi laudantium recusandae necessitatibus dolor quaerat quisque! Lectus deserunt taciti magnis, a non eligendi similique? Exercitationem eius corporis. Faucibus eiusmod delectus voluptatum nascetur, alias doloremque sagittis, repellendus laudantium quae, iaculis, cras maecenas fusce suspendisse amet magnam nulla gravida mollis, tempora gravida", 
      "rich": "Sem, imperdiet voluptatibus. Molestias, gravida vehicula, irure suscipit. Dis facilisi laudantium recusandae necessitatibus dolor quaerat quisque! Lectus deserunt taciti magnis, a non eligendi similique? Exercitationem eius corporis. Faucibus eiusmod delectus voluptatum nascetur, alias doloremque sagittis, repellendus laudantium quae, iaculis, cras maecenas fusce suspendisse amet magnam nulla gravida mollis, tempora gravida" 
     }, 
     "thread_id": 956818730, 
     "client_type": "Zapier", 
     "client_url": "https://zapier.com/zapbook/example/", 
     "system_message": false, 
     "direct_message": false, 
     "chat_client_sequence": null, 
     "language": "en", 
     "notified_user_ids": [], 
     "privacy": "public", 
     "attachments": [], 
     "liked_by": { 
      "count": 0, 
      "names": [] 
     }, 
     "content_excerpt": "Sem, imperdiet voluptatibus. Molestias, gravida vehicula, irure suscipit. Dis facilisi laudantium recusandae necessitatibus dolor quaerat quisque! Lectus deserunt taciti magnis, a non eligendi similique? Exercitationem eius corporis. Faucibus eiusmod delectus voluptatum nascetur, alias doloremque sagittis, repellendus laudantium quae, iaculis, cras maecenas fusce suspendisse amet magnam nulla gravida mollis, tempora gravida", 
     "group_created_id": 7418529 
     }, 
     { 
     "id": 987654321, 
     "sender_id": 3214569870, 
     "replied_to_id": 123555777, 
     "created_at": "2017/09/28 15:28:28 +0000", 
     "network_id": 554477, 
     "message_type": "update", 
     "sender_type": "user", 
     "url": "https://www.example.com", 
     "web_url": "https://www.example.com/987654321", 
     "body": { 
      "parsed": "Veniam quasi sem, neque netus? Eos quae voluptatibus autem optio varius euismod voluptas, voluptatum inventore", 
      "plain": "Veniam quasi sem, neque netus? Eos quae voluptatibus autem optio varius euismod voluptas, voluptatum inventore", 
      "rich": "Veniam quasi sem, neque netus? Eos quae voluptatibus autem optio varius euismod voluptas, voluptatum inventore" 
     }, 
     "thread_id": 956224600, 
     "client_type": "Web", 
     "client_url": "https://www.example.com/", 
     "system_message": false, 
     "direct_message": false, 
     "chat_client_sequence": null, 
     "language": "en", 
     "notified_user_ids": [], 
     "privacy": "public", 
     "attachments": [], 
     "liked_by": { 
      "count": 0, 
      "names": [] 
     }, 
     "content_excerpt": "Veniam quasi sem, neque netus? Eos quae voluptatibus autem optio varius euismod voluptas, voluptatum inventore", 
     "group_created_id": null 
     } 
    ]} 

私はJArrayをループするために使用しようとしているコードだ

私のJSONは、次のようにフォーマットされて... ...私はそれjArr.Countを行う

Dim jObj As JObject = JObject.Parse(File.ReadAllText(outputJSONpath & "myFile.json")) 
Dim jArr As JArray = CType(jObj("messages"), JArray) 
Dim i As Int32 = 0 
For Each msg As JObject In jArr 
    Dim threadID = msg.GetValue("thread_ID") 
    'Do Work 
Next 

6,341を返します。なぜmsgは宣言されていないのですか?私の6,341 msgのそれぞれについてthread_IDの値に到達するにはどうすればよいですか?

+0

もう一度:) msg​​のタイプを推測してみてください。https://stackoverflow.com/questions/5678909/is-vbs-dim-the-same-as-cs-var – hardkoded

+0

提案をいただきありがとうございます。私はOption Infer Onを試みました。 msgはまだ宣言されていませんでした。 – s15199d

答えて

1

msgは宣言されていません - あなたのFor Eachループには、間違いなくそこに宣言されています。おそらく、配列内の1つ以上のメッセージ項目が実際にnullであるか、JObjectではないように思えます。もう少し防衛的にコードを作成し、nullをチェックする必要があるかもしれませんし、JTokenのタイプがあなたがそれを使用しようとする前に期待しているものであるかどうかを確認する必要があります。同様にthread_ID値と同じです。おそらく、代わりにこのような何か:

For Each msg As JToken In jArr 

    If Not msg Is Nothing AndAlso msg.Type = JTokenType.Object Then 

     Dim threadID As JToken = msg("thread_ID") 
     If Not threadID Is Nothing AndAlso threadID.Type = JTokenType.Integer Then 

      Dim id As Integer = CType(threadID, Integer) 

      '... Do something with id 
      Console.WriteLine(id) 

     End If 

    End If 

Next 

更新

OK、私は問題が今あるものを参照してください。 GetValue()またはインデクサーの構文(msg("thread_ID"))をJTokenに使用すると、プロパティ名で大文字と小文字が区別されます。あなたのコードにはthread_IDがありますが、JSONではthread_idなので、コードはそれを決して見つけません。

変更:

Dim threadID As JToken = msg("thread_id") 

、それが動作するはずです:

Dim threadID As JToken = msg("thread_ID") 

へ。

+0

ありがとう@BrianRogers。 thread_IDは潜在的にnullなので、なぜ私はそれをキャストしていませんでした。後で私のコードでは、それがnullの場合は、私はCInt(threadID)を使用してそれを隠すかどうかをチェックします。しかし、私の問題はその前です...私はmsgが宣言されていない取得しています。 msgがなければ、thread_IDはありません。 – s15199d

+0

あなたが得ているメッセージの実際のテキストは何ですか? 'msg'はあなたのコードではっきりと宣言されています。これは' For Each'ループの中にあります。 'msg'自体は実際にはヌルですか?たぶん、For Eachループの中でヌルチェックが必要なのでしょうか? –

+0

私は努力を感謝します! Ifは渡すことはありません。ThreadIDは何もテストではありません。毎回、threadIDが「何も」ではない。私が指摘しなければならないのは、そうではない。 – s15199d

関連する問題