I've got the following JSON string to deserialize:
[{"application_id":"1","application_package":"abc"},{"application_id":"2","application_package":"xyz"}]
I'm using DataContractJsonSerializer method.
It is made up of array of items and I couldn't find an example using VB.Net that can deserialize this structure. I have the following Application class to store this information:
<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
Here is the easiest way to deserialize JSON into an object (using .NET 4):
Example JSON:
{
"dogs":[],
"chickens":[
{
"name":"Macey",
"eggs":7
},
{
"name":"Alfred",
"eggs":2
}
]
}
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
I'd recommend you to use JavaScriptSerializer
over DataContractJsonSerializer
. The reasons are:
JavaScriptSerializer
is faster over DataContractJsonSerializer
DataContractJsonSerializer
requires more code than JavaScriptSerializer
for a simple serialization.You won't need the DataContract
and DataMember
attribute to use along with JavaScriptSerializer
Use this data class
<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
And use this to deserialize your jsonText
:
Dim jss As New JavaScriptSerializer()
Dim dict = jss.Deserialize(Of List(Of ApplicationItem))(jsonText)
If you still want to use DataContractJsonSerializer
, you can use this code below to deserialize:
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()
Courtesy: Used Telerik Code Converter
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With