【发布时间】:2015-12-27 13:51:15
【问题描述】:
当我尝试反序列化我得到的 JSON 内容时,我真的不明白我做错了什么。
您可以得到http://api.steampowered.com/ISteamApps/GetAppList/v2?format=json的回复
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Linq
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim SteamGameInfoObject As Object = JsonConvert.DeserializeObject(Of Object)(New System.Net.WebClient().DownloadString("http://api.steampowered.com/ISteamApps/GetAppList/v2?format=json"))
End Sub
Public Class SteamRootObject
Public Class SteamAPIJSONResult
Public Property applist As List(Of applistlist)
End Class
Public Class applistlist
Public Property apps As List(Of appslist)
End Class
Public Class appslist
Public Property appid As Integer()
Public Property name As String()
End Class
End Class
End Class
我不知道如何“要修复此错误,请将 JSON 更改为 JSON 数组”
【问题讨论】:
-
您没有告诉我们错误消息的第一部分,我们无法在没有看到您正在使用的代码的情况下告诉您如何解决该问题。听起来您没有反序列化为数组类型
-
我要把它编辑成完整的源代码。
-
你构造了类来保存反序列化的数据,然后没有使用它们。您还应该允许连接和获取 json 可能会失败,将其作为单独的步骤进行
-
它现在使用构造的类,但我仍然收到错误:“要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型它是一个普通的 .NET 类型”
-
那些类不应该嵌套,
SteamRootObject是错误的,它应该只是Public Property applist as applistlist,因为可怕的命名applistlist已经是一个列表。显示的代码没有使用这些类。As Object没有告诉反序列化器使用这些类。
标签: arrays json vb.net variables json.net