Я пытаюсь десериализовать json, возвращаемый API некоторых направлений, похожий на API Карт Google. Мой JSON выглядит следующим образом (я использую VB.NET 2008):
jsontext =
{
«Версия»: 0,3,
"Статус": 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": [["Направляйся на северо-запад 43", 88,0,4, "88 м", "СЗ", 334,8], ["Продолжай 42", 212,1,10, "0,2 км", " СЗ», 331,1, "С", 356,3]]
}
До сих пор я придумал следующий код:
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim lstTextAreas As Output_CloudMade() = js.Deserialize(Of Output_CloudMade())(jsontext)
Я не уверен, как определить сложный класс, т.е. Output_CloudMade.
Я пытаюсь что-то вроде:
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
но это не работает. Проблема со сложными свойствами, такими как route_summary. Это заполнено "ничем". Другие свойства, такие как «статус» или «версия», заполнены правильно.
Есть идеи, как определить класс для вышеупомянутого JSON?
Можете ли вы поделиться рабочим кодом для десериализации JSON в VB.NET?
Спасибо