【发布时间】:2017-04-10 02:45:17
【问题描述】:
我正在尝试为 LoL 制作一个程序,允许用户查看玩家的特定统计数据。但是,我遇到了问题..
我得到的错误是。
附加信息:无法反序列化当前 JSON 数组 (例如 [1,2,3])输入“WindowsApplication1.Form1+Rootobject” 因为该类型需要一个 JSON 对象(例如 {"name":"value"}) 正确反序列化。
这是我目前的代码。
Public Class Rootobject
Public Property games As Integer
Public Property winPercent As Double
Public Property order As List(Of Class1)
Public Property role As String
End Class
Public Class Class1
Public Property order() As String
End Class
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim client As WebClient = New WebClient()
client.Headers.Add("Content-Type", "application/json")
Dim reply As String = client.DownloadString("skills/mostPopular?api_key=")
Dim rootObject As Rootobject = JsonConvert.DeserializeObject(Of Rootobject)(reply)
MsgBox(rootObject.games)
End Sub
这是 JSON 的样子。 (我发布了一个 URL,但它需要一个 API 密钥)
[
{
"games": 1650,
"winPercent": 46.9,
"order": [
"Q",
"W",
"E",
"Q",
"Q",
"R",
"Q",
"W",
"Q",
"W",
"R",
"W",
"W",
"E",
"E",
"R",
"E",
"E"
],
"role": "Support"
},
{
"games": 9769,
"winPercent": 51.8,
"order": [
"Q",
"W",
"E",
"Q",
"Q",
"R",
"Q",
"W",
"Q",
"W",
"R",
"W",
"W",
"E",
"E",
"R",
"E",
"E"
],
"role": "Middle"
}
]
【问题讨论】:
-
在尝试将 .NET 对象结构与 JSON 匹配时,我经常创建一个临时方法,创建一个新的临时对象(在您的情况下,
Rootobject的实例用虚拟数据填充它(确保我已经填充了每个可序列化的属性),然后将其序列化为 JSON。然后我知道 JSON 是什么预期的,我并没有陷入黑暗。