でこのJSONをデシリアライズ私はこの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のアイテムがあります。 jsonはKeyValuePairsに解析されます。
私はコード
Dim data = myjss.DeserializeObject(steamData)
のこの部分を使用して、データ要素の各ループのために実行した場合、デバッグ時に、私はデータの内容を見ることができますが、私はで動作する方法がわかりませんKeyValuePairsの配列を含んでいる可能性があるKeyValuePairsに変換する際に問題が生じているオブジェクトなので、それらはそうです。
私が得ようとしているのは、solo_competitive_rank、competitive_rank、およびsteamidの値ですが、すべてのコンテンツをデシリアライズできない場合は、それを行うことはできません。
宣言されたクラスは間違っていますか?
*その*のJSONはただ一つのアイテムを持っていない - 何の '[...] 'が - 。。そう(の)リストや配列にデシリアライズいけないクラスはsupoptimalですが、動作します見てデータでは - steadmidの場合はデータが引用されているので、それは文字列です。チーズなどは整数ではありませんので、これが大量であればJSON.NET – Plutonix
を使用することもできます(null)を値の型に変換できません。} \t System.InvalidOperationException また、プロパティの型を適切な型に編集しました(いくつかのint型、 doubleとdatetime) – Legjendat
*正確なデータ?nullは唯一の名前です。文字列に変換できます。 – Plutonix