J'ai cette réponse JSON:Désérialise cette JSON dans VB.NET
{
"tracked_until": "1483704963",
"solo_competitive_rank": "4066",
"competitive_rank": "3821",
"mmr_estimate": {
"estimate": 3971,
"stdDev": 215.26495302301302,
"n": 20
},
"profile": {
"account_id": 131505839,
"personaname": "LeG",
"name": null,
"cheese": 1,
"steamid": "76561198091771567",
"avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/c0/c09ca9b316ff7bf7dccba6f5a32aba97b8dba05c.jpg",
"avatarmedium": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/c0/c09ca9b316ff7bf7dccba6f5a32aba97b8dba05c_medium.jpg",
"avatarfull": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/c0/c09ca9b316ff7bf7dccba6f5a32aba97b8dba05c_full.jpg",
"profileurl": "http://steamcommunity.com/id/LegLabs/",
"last_login": "2016-11-11T13:13:18.651Z",
"loccountrycode": "AL"
}
}
l'aide d'un outil en ligne, j'ai créé ces classes:
<Serializable>
Public Class mmr_estimate
Public Property estimate As String
Public Property stdDev As String
Public Property n As String
End Class
<Serializable>
Public Class profile
Public Property account_id As String
Public Property personaname As String
Public Property name As String
Public Property cheese As String
Public Property steamid As String
Public Property avatar As String
Public Property avatarmedium As String
Public Property avatarfull As String
Public Property profileurl As String
Public Property last_login As String
Public Property loccountrycode As String
End Class
<Serializable>
Public Class RootObject
Public Property tracked_until As String
Public Property solo_competitive_rank As String
Public Property competitive_rank As String
Public Property mmr_estimate As mmr_estimate
Public Property profile As profile
End Class
Puis-je utiliser ce code pour désérialiser:
Dim steamData As String = ' the json contents above
Dim myjss As New JavaScriptSerializer()
Dim playerDictionary = myjss.Deserialize(Of List(Of RootObject))(steamData)
Mais le résultat que je reçois est rien, playerDictionary a 0 items, quand il devrait avoir 1 élément avec le contenu du json analysé dans KeyValuePairs.
Si j'utilise ce morceau de code
Dim data = myjss.DeserializeObject(steamData)
puis exécutez une pour chaque boucle sur les éléments de données, je peux voir le contenu des données lors de débogage, mais je ne sais pas comment travailler avec comme ça, car ce ne sont que des objets que j'ai du mal à convertir en KeyValuePairs, qui en eux-mêmes peuvent contenir des tableaux de KeyValuePairs. Ce que j'essaie d'obtenir, ce sont les valeurs de solo_competitive_rank, competitive_rank et steamid, mais si je n'arrive pas à désérialiser tout le contenu, je ne peux pas le faire.
Les classes déclarées sont-elles erronées?
* Ce * JSON a un seul élément - pas '[...]' il -.. Alors ne désérialiser à une liste (de) ou d'un tableau Les classes sont supoptimal mais travailleront Regardez à la donnée - pour 'steadmid' les données sont citées donc c'est une chaîne.' cheese' et les autres ne l'est pas, donc ça devrait être un entier.Si vous en faites beaucoup, vous pouvez utiliser JSON.NET – Plutonix
ok , supprimant la liste (de), me donne une autre erreur qui est l'exception \t {"Impossible de convertir null à un type de valeur."} \t System.InvalidOperationException En outre, j'ai modifié les types de propriété à leurs propres, (certains ents, double et un datetime) – Legjendat
Avec * cette * donnée exacte? peut être converti en chaîne. – Plutonix