我从提供者那里得到了以下简化的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"。
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" } }
或使用例如a ContractResolver解析JSON字符串。
ContractResolver