我正在尝试将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
}
]
}
现在我正在尝试将此String反序列化为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 Deserializer进行反序列化:
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)
但在这两种情况下,我只能访问“status”和“count”,但不能访问“data”数组。
我是Visual Basic的新手,所以我读了很多关于JSON和Deserializer以及其他有这类问题的人,但是大多数解决方案都是针对C#而不是针对VB.net
任何想法我可能做错了什么?
答案 0 :(得分:1)
我使用JsonToCSharp
转换了您的JSON ...然后将C#转换为vb.net ...
Public Class Datum
Public Property clan_id() As System.Nullable(Of Integer)
Get
Return m_clan_id
End Get
Set
m_clan_id = Value
End Set
End Property
Private m_clan_id As System.Nullable(Of Integer)
Public Property nickname() As String
Get
Return m_nickname
End Get
Set
m_nickname = Value
End Set
End Property
Private m_nickname As String
Public Property id() As Integer
Get
Return m_id
End Get
Set
m_id = Value
End Set
End Property
Private m_id As Integer
End Class
Public Class RootObject
Public Property status() As String
Get
Return m_status
End Get
Set
m_status = Value
End Set
End Property
Private m_status As String
Public Property count() As Integer
Get
Return m_count
End Get
Set
m_count = Value
End Set
End Property
Private m_count As Integer
Public Property data() As List(Of Datum)
Get
Return m_data
End Get
Set
m_data = Value
End Set
End Property
Private m_data As List(Of Datum)
End Class
试试这些课程。
答案 1 :(得分:0)
你关闭;你的括号在错误的地方。在Rootobject
课程中,更改此行:
Public Property data() As Datum
到此:
Public Property data As Datum()
或者,这也有效:
Public Property data As List(Of Datum)