代码之家  ›  专栏  ›  技术社区  ›  s15199d

通过JArray的NewtonSoft JSON循环

  •  0
  • s15199d  · 技术社区  · 7 年前

    我的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
          }
        ]}
    

    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 返回6341。为什么未声明msg?如何获得每个6341消息的thread\u ID值?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Brian Rogers    7 年前

    我不知道你是什么意思 msg For Each null 或者不是 JObject 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
    

    GetValue() 或索引器语法,即。 msg("thread_ID") ,在 ,属性名称区分大小写。在代码中 线程ID ,但在JSON中 thread_id

    更改:

    Dim threadID As JToken = msg("thread_ID")
    

    收件人:

    Dim threadID As JToken = msg("thread_id")
    

    它应该会起作用。