使用vb.net解析json代码异常

问题描述 投票:0回答:1

我试图使用vb.net Windows窗体应用程序来解析一些JSON代码。我的代码构建得很好并且编译,但是当我点击我的按钮时,我得到了这个例外:

Newtonsoft.Json.JsonReaderException:'解析NaN值时出错。路径'',第1行,第1位。'

异常指向我的代码末尾的这一行:

For Each item As JObject In JArray.Parse(jsonObjects.SelectTokens("items").ToString)

我试图解决它,但我不知道该怎么做了。这是我的代码:

Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim jsonString As String = "{""id"":1, ""name"":""tom"", 
""items"":[
    {""name"":""apple"", ""count"":1 },
    {""name"":""milk"", ""count"":2 }
]
}"
        Dim jsonObjects As JObject = JObject.Parse(jsonString)
        Console.WriteLine("id:" & jsonObjects.SelectTokens("id").ToString)
        Console.WriteLine("name:" & jsonObjects.SelectTokens("name").ToString)

        Console.WriteLine("items:" & jsonObjects.SelectTokens("items").ToString)
        'Dim jsonArray As JArray = JArray.Parse(jsonObjects.SelectTokens("items").ToString)
        For Each item As JObject In JArray.Parse(jsonObjects.SelectTokens("items").ToString)
            Console.WriteLine("item:" & item.SelectTokens("name").ToString)
        Next
    End Sub
End Class
json vb.net
1个回答
0
投票

I am trying to ... parse through some JSON

在循环开始之前到达异常之前,这不会导致任何非常有用的东西:

Console.WriteLine("id:" & jsonObjects.SelectTokens("id").ToString)

SelectTokens返回IEnumerable(Of Newtonsoft.Json.Linq.JToken)。试图用ToString显示它只会导致:

Newtonsoft.Json.Linq.JsonPath.FieldFilter+<ExecuteFilter>d__0

如果您想要整个JSON中的多个项目,那么将它反序列化为.NET对象或集合可能更容易,但这不是您所要求的。这将列出Tom拥有的项目:

Dim jobj = JObject.Parse(Candyjson)

' print the Id, name and how many items there are
Console.WriteLine("Id: {0}  Name: {1} has {2} Items", jobj("id"), jobj("name"),
                  jobj("items").Count)

' print each item name and how many there are 
For n As Int32 = 0 To jobj("items").Count - 1
    Console.WriteLine("Item: {0},  Count: {1}",
                            jobj("items")(n)("name"),
                            jobj("items")(n)("count")
                            )
Next

结果:

Id:1姓名:tom有2件商品 项目:苹果,数量:1 项目:牛奶,数量:2

一解析JSON,生成的JObject将包含各种其他内容,具体取决于JSON中的内容。如果你设置一个断点并检查jobj,结果将与你的JSON(字符串)看起来很相似,但它是一个你可以查询的形式:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.