【问题标题】:Looping through JSON with NewtonSoft使用 NewtonSoft 循环遍历 JSON
【发布时间】:2018-03-13 15:22:46
【问题描述】:

我的 JSON 文件中有超过 6,300 条消息。我的 JSON 格式是这样的......

{ "messages":[
  {
    "id": ...
  }
...
]}

我正在尝试使用 NewtonSoft 使用此代码遍历此 JSON 文件中的每条消息...

Dim jObj As JObject = JObject.Parse(File.ReadAllText(outputJSONpath & "myFileName.json"))
Dim jArr As New JArray(jObj("messages"))
For Each message As JObject In jArr.Children(Of JObject)()
    'Do work
Next

当我执行jArr.Children(Of JObject)().Count 时,我得到 0。我希望看到计数为 6,300。在即时窗口中,我看到 jObj 和 jArr 的有效对象。我以前成功地使用过与此非常相似的代码,但我无法弄清楚这里出了什么问题。我在 jsonlint.com 上验证了我的 JSON 是有效的,我想我可能有损坏的 JSON。有什么想法吗?

【问题讨论】:

    标签: asp.net json vb.net json.net


    【解决方案1】:

    messages 是一个 JArray,你只需要将它转换:

    Dim jArr As JArray = CType(jObj("messages"), JArray)
    

    【讨论】:

    • 谢谢@kblok!你成功了!
    • @kblock For Each message As JObject In jarr.Children(Of JObject)() Dim threadID = message.SelectToken("thread_ID") 它告诉我消息未声明。
    • 你为什么不尝试循环这个For Each message As JObject In jarr
    • 同样的结果。消息未声明。
    • 本地测试,是jArr.Values() :)
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    相关资源
    最近更新 更多