Newtonsoft JSON通过Jarray循环



我正在尝试通过jarray循环,而我得到的味精不是在我的/下一个循环中声明错误。

我的JSON的格式是这样...

{ "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循环的代码...

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

当我进行jArr.Count时,它将返回6,341。为什么未声明味精?我如何获取6,341个msg中每个中的thread_id的值?

我不确定您对msg没有被声明的意思 - 它绝对是在For Each循环中声明的。听起来可能是数组中的一个或多个消息项实际上可能是nullJObject。您可能需要更防御性地编码并检查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

update

好吧,我知道现在的问题是什么。当您使用GetValue()或索引语法(即msg("thread_ID"))在JToken上时,属性名称对案例敏感。在您的代码中,您有thread_ID,但是在JSON中是thread_id,因此代码永远不会找到它。

更改:

Dim threadID As JToken = msg("thread_ID")

to:

Dim threadID As JToken = msg("thread_id")

它应该起作用。

相关内容

  • 没有找到相关文章

最新更新