Deserialize complex JSON (VB.NET)

Posted by Ssstefan on Stack Overflow See other posts from Stack Overflow or by Ssstefan
Published on 2011-02-10T10:16:04Z Indexed on 2012/09/25 21:38 UTC
Read the original article Hit count: 306

Filed under:
|
|

I'm trying to deserialize json returned by some directions API similar to Google Maps API. My JSON is as follows (I'm using VB.NET 2008):

jsontext = { "version":0.3, "status":0, "route_summary": { "total_distance":300, "total_time":14, "start_point":"43", "end_point":"42" }, "route_geometry":[[51.025421,18.647631],[51.026131,18.6471],[51.027802,18.645639]], "route_instructions": [["Head northwest on 43",88,0,4,"88 m","NW",334.8],["Continue on 42",212,1,10,"0.2 km","NW",331.1,"C",356.3]] }

So far I came up with the following code:

Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim lstTextAreas As Output_CloudMade() = js.Deserialize(Of Output_CloudMade())(jsontext)

I'm not sure how to define complex class, i.e. Output_CloudMade.

I'm trying something like:

Public Class RouteSummary
    Private mTotalDist As Long
    Private mTotalTime As Long
    Private mStartPoint As String
    Private mEndPoint As String


    Public Property TotalDist() As Long
        Get
            Return mTotalDist
        End Get
        Set(ByVal value As Long)
            mTotalDist = value
        End Set
    End Property

    Public Property TotalTime() As Long
        Get
            Return mTotalTime
        End Get
        Set(ByVal value As Long)
            mTotalTime = value
        End Set
    End Property

    Public Property StartPoint() As String
        Get
            Return mStartPoint
        End Get
        Set(ByVal value As String)
            mStartPoint = value
        End Set
    End Property

    Public Property EndPoint() As String
        Get
            Return mEndPoint
        End Get
        Set(ByVal value As String)
            mEndPoint = value
        End Set
    End Property

End Class

Public Class Output_CloudMade

    Private mVersion As Double
    Private mStatus As Long
    Private mRSummary As RouteSummary
    'Private mRGeometry As RouteGeometry
    'Private mRInstructions As RouteInstructions

    Public Property Version() As Double
        Get
            Return mVersion
        End Get
        Set(ByVal value As Double)
            mVersion = value
        End Set
    End Property

    Public Property Status() As Long
        Get
            Return mStatus
        End Get
        Set(ByVal value As Long)
            mStatus = value
        End Set
    End Property

    Public Property Summary() As RouteSummary
        Get
            Return mRSummary
        End Get
        Set(ByVal value As RouteSummary)
            mRSummary = value
        End Set
    End Property


    'Public Property Geometry() As String
    '    Get

    '    End Get
    '    Set(ByVal value As String)

    '    End Set
    'End Property

    'Public Property Instructions() As String
    '    Get

    '    End Get
    '    Set(ByVal value As String)

    '    End Set
    'End Property

End Class

but it does not work. The problem is with complex properties, like route_summary. It is filled with "nothing". Other properties, like "status" or "version" are filled properly.

Any ideas, how to define class for the above JSON?

Can you share some working code for deserializing JSON in VB.NET?

Thanks,

© Stack Overflow or respective owner

Related posts about vb.net

Related posts about JSON