我试图将一个JSON字符串转换为VB.net对象,以便更轻松地访问JSON字符串中的所有数据。
我的JSON字符串如下:
{
"status": "ok",
"count": 4,
"data": [
{
"clan_id": 500002846,
"nickname": "Azrael",
"id": 500429872
},
{
"clan_id": null,
"nickname": "Azrael0",
"id": 500913252
},
{
"clan_id": 500028112,
"nickname": "Azrael0313",
"id": 504109422
},
{
"clan_id": null,
"nickname": "Azrael7",
"id": 501594186
}
]
}
现在我正在尝试将这个字符串反序列化为VB.net对象。
我的类定义如下:
Public Class Rootobject
Private _data1 As String
Public Property status As String
Public Property count As Integer
Public Property data() As Datum
End Class
Public Class Datum
Public Property clan_id As Integer?
Public Property nickname As String
Public Property id As Integer
End Class
这是Visual Studio 2012自动生成的用于我的JSON字符串的代码。
我尝试使用.JSON反序列化器进行反序列化:
Dim Testobject As Rootobject _
= Global.Newtonsoft.Json.JsonConvert.DeserializeObject(Of Rootobject)(JSON_String)
使用JavaScriptSerializer:
Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer()
Dim Testobject_2 As Rootobject = serializer.Deserialize(Of Rootobject)(JSON_String)
但在这两种情况下,我只能访问“状态”和“计数”,而无法访问“数据”数组。
我是Visual Basic的新手,所以我阅读了很多关于JSON和反序列化程序的内容,还找到了其他遇到类似问题的人,但大多数解决方案都适用于C#,而不是VB.net
有任何想法,我可能做错了什么吗?
Public Property data() As IList(Of Datum)
,然后出现以下信息:无法将当前JSON对象(例如{"name":"value"})反序列化为类型'System.Collections.Generic.IList`1[WoT_Tool.WoT_Tool+Datum]',因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。要修正此错误,请将JSON更改为JSON数组(例如[1,2,3])。 - Azrael