У меня есть этот JSon ответ:Deserialize этот JSON в 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"
}
}
с помощью онлайн-инструмент, я создал эти классы:
<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
Затем я использую этот код для десериализации его:
Dim steamData As String = ' the json contents above
Dim myjss As New JavaScriptSerializer()
Dim playerDictionary = myjss.Deserialize(Of List(Of RootObject))(steamData)
Но результат, который я получаю, ничего, playerDictionary имеет 0 элементов, когда он должен иметь 1 элемент с содержимым json разобрался в KeyValuePairs.
Если я использую этот кусок кода
Dim data = myjss.DeserializeObject(steamData)
, а затем запустить для каждого цикла по элементам данных, я могу видеть содержимое данных при отладке, но я не знаю, как работать с они такие, потому что это просто объекты, с которыми у меня возникают проблемы с преобразованием в KeyValuePairs, которые сами по себе могут содержать массивы KeyValuePairs.
То, что я пытаюсь получить, это ценности solo_competitive_rank, compet_rank и steamid, но если я не могу получить все содержимое десериализованным, я не могу этого сделать.
Являются ли объявленные классы неправильными?
* Это * JSON не имеет только один пункт - не '[...]' там -.. Так что не десериализации в список (из) или массива Классы supoptimal, но будет работать Смотри на данных - для 'steadmid' данные цитируются так, что это строка.' cheese' и другие нет, поэтому он должен быть целым. Если вы это сделаете, вы можете использовать JSON.NET – Plutonix
ok , удаляя List (of), дает мне еще одну ошибку, которая является исключением \t {«Невозможно преобразовать значение null в тип значения».} \t System.InvalidOperationException Кроме того, я редактировал типы свойств для своих собственных (некоторые ints, удваивает и datetime). – Legjendat
С *, что * точные данные? Единственный нуль - это имя, которое могут быть преобразованы в строку. – Plutonix