simeh simeh - 3 months ago 68
JSON Question

VB.net JSON Deserialize

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

Answer

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

Comments