J'ai la chaîne JSON simplifiée suivante d'un fournisseur, cela fait longtemps que je n'ai pas utilisé Visual Studio et vb.Net, je suis donc très rouillé!
{
"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"
}
}
}
Je veux utiliser JSON.Net pour transformer ceci en quelque chose avec lequel je peux travailler, j'ai lu des exemples, etc., et JSON.net ressemble à la réponse, mais je ne me rend nulle part.
Mon code .Net (Me.TextBox1.Text contient le JSON présenté ci-dessus)
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
Quelqu'un peut-il expliquer pourquoi obj.ID se termine toujours par 0 s'il vous plaît, et pourquoi aucune des autres propriétés de ma classe n'est renseignée et ce que je dois faire pour résoudre ce problème, aucune erreur n'est signalée.
Ta classe JSON_result
ne correspond pas à votre chaîne JSON. Notez comment l'objet JSON_result
que va représenter est encapsulé dans une autre propriété nommée "Venue"
.
Donc, soit créer une classe pour cela, par exemple:
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...)
ou changez votre chaîne JSON en
{
"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"
}
}
ou utilisez par exemple un ContractResolver
pour analyser la chaîne JSON.
Imports Newtonsoft.Json.Linq
Dim json As JObject = JObject.Parse(Me.TextBox1.Text)
MsgBox(json.SelectToken("Venue").SelectToken("ID"))