我有以下来自提供程序的简化的JSON字符串,自从我使用Visual Studio和 vb.Net 以来已经有很长时间了,所以我很生疏!
{
"Venue": {
"ID": 3145,
"Name": "Big Venue, Clapton",
"NameWithTown": "Big Venue, Clapton, London",
"NameWithDestination": "Big Venue, Clapton, London",
"ListingType": "A",
"Address": {
"Address1": "Clapton Raod",
"Address2": "",
"Town": "Clapton",
"County": "Greater London",
"Postcode": "PO1 1ST",
"Country": "United Kingdom",
"Region": "Europe"
},
"ResponseStatus": {
"ErrorCode": "200",
"Message": "OK"
}
}
}
我想用 JSON.Net 把它变成我可以处理的东西,我已经阅读了示例等,JSON.net 看起来像答案,但我无处可去。
我的 .Net 代码(Me.TextBox1.Text 包含上面显示的 JSON)
Imports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim obj As JSON_result
obj = JsonConvert.DeserializeObject(Of JSON_result)(Me.TextBox1.Text)
MsgBox(obj.ID)
End Sub
End Class
Public Class JSON_result
Public ID As Integer
Public Name As String
Public NameWithTown As String
Public NameWithDestination As String
Public ListingType As String
End Class
有人可以解释为什么 obj.ID 总是以 0 结尾,以及为什么没有填充我的类的其他属性以及我需要做什么来解决这个问题,没有报告任何错误。
您的类JSON_result
与您的 JSON 字符串不匹配。请注意JSON_result
要表示的对象如何包装在名为 "Venue"
的另一个属性中。
因此,要么为此创建一个类,例如:
Public Class Container
Public Venue As JSON_result
End Class
Public Class JSON_result
Public ID As Integer
Public Name As String
Public NameWithTown As String
Public NameWithDestination As String
Public ListingType As String
End Class
Dim obj = JsonConvert.DeserializeObject(Of Container)(...your_json...)
或将 JSON 字符串更改为
{
"ID": 3145,
"Name": "Big Venue, Clapton",
"NameWithTown": "Big Venue, Clapton, London",
"NameWithDestination": "Big Venue, Clapton, London",
"ListingType": "A",
"Address": {
"Address1": "Clapton Raod",
"Address2": "",
"Town": "Clapton",
"County": "Greater London",
"Postcode": "PO1 1ST",
"Country": "United Kingdom",
"Region": "Europe"
},
"ResponseStatus": {
"ErrorCode": "200",
"Message": "OK"
}
}
或者使用例如ContractResolver
来解析 JSON 字符串。
Imports Newtonsoft.Json.Linq
Dim json As JObject = JObject.Parse(Me.TextBox1.Text)
MsgBox(json.SelectToken("Venue").SelectToken("ID"))
代替使用这个
MsgBox(json.SelectToken("Venue").SelectToken("ID"))
您也可以使用
MsgBox(json.SelectToken("Venue.ID"))