Bih*_*eng 8 vb.net json deserialization
我有以下JSON字符串来反序列化:
[{"application_id":"1","application_package":"abc"},{"application_id":"2","application_package":"xyz"}]
我正在使用DataContractJsonSerializer方法.
它由一系列项目组成,我找不到使用可以反序列化此结构的VB.Net的示例.我有以下Application类来存储此信息:
<DataContract(Namespace:="")> _
Public Class ApplicationItem
<DataMember(Name:="application_id")>
Public Property application_id As String
<DataMember(Name:="application_package")>
Public Property application_package As String
End Class
Run Code Online (Sandbox Code Playgroud)
Cra*_*Tim 25
以下是将JSON反序列化为对象的最简单方法(使用.NET 4):
示例JSON:
{
"dogs":[],
"chickens":[
{
"name":"Macey",
"eggs":7
},
{
"name":"Alfred",
"eggs":2
}
]
}
Run Code Online (Sandbox Code Playgroud)
VB.NET:
Try
Dim j As Object = New JavaScriptSerializer().Deserialize(Of Object)(JSONString)
Dim a = j("dogs") ' returns empty Object() array
Dim b = j("chickens")(0) ' returns Dictionary(Of String, Object)
Dim c = j("chickens")(0)("name") ' returns String "Macey"
Dim d = j("chickens")(1)("eggs") ' returns Integer 2
Catch ex As Exception
' in case the structure of the object is not what we expected.
End Try
Run Code Online (Sandbox Code Playgroud)
Abd*_*nim 21
我建议你用完JavaScriptSerializer了DataContractJsonSerializer.原因是:
JavaScriptSerializer 更快 DataContractJsonSerializerDataContractJsonSerializer需要比JavaScriptSerializer简单序列化更多的代码.您不需要DataContract和the DataMember属性一起使用JavaScriptSerializer
使用此数据类
<Serializable> _
Public Class ApplicationItem
Public Property application_id() As String
Get
Return m_application_id
End Get
Set
m_application_id = Value
End Set
End Property
Private m_application_id As String
Public Property application_package() As String
Get
Return m_application_package
End Get
Set
m_application_package = Value
End Set
End Property
Private m_application_package As String
End Class
Run Code Online (Sandbox Code Playgroud)
并使用它来反序列化你的jsonText:
Dim jss As New JavaScriptSerializer()
Dim dict = jss.Deserialize(Of List(Of ApplicationItem))(jsonText)
Run Code Online (Sandbox Code Playgroud)
如果您仍想使用DataContractJsonSerializer,可以使用以下代码反序列化:
Dim obj As New List(Of ApplicationItem)()
Dim ms As New MemoryStream(Encoding.Unicode.GetBytes(json))
Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.[GetType]())
obj = DirectCast(serializer.ReadObject(ms), List(Of ApplicationItem))
ms.Close()
ms.Dispose()
Run Code Online (Sandbox Code Playgroud)