这是我从 HTTP 响应中收到的 JSON 字符串。
[{"ts":"1395318389","date":"2014-03-20","time":"12:26:21","nodeid":"1229001363","lat":"53.292425","lon":"-6.43203333333333","speed":"76","dir":"242","sv":"9","volt":"4187","rssi":"-69","us":"3","type":0,"net":"27202","height":"108","hdop":"9","cellid":"EB84","dd":6105,"ttf":"0","lac":"4E24","odo":"0","gle":"0"}]
我的类(class)是这样设置的
Friend Class SmartTrack_PostionList
Public positionList As SmartTrack_Postion()
End Class
Friend Class SmartTrack_Postion
Public ts As String
Public [date] As String
Public time As String
Public nodeid As String
Public lat As String
Public lon As String
Public speed As String
Public dir As String
Public sv As String
Public volt As String
Public rssi As String
Public us As String
Public type As String
Public net As String
Public height As String
Public hdop As String
Public cellid As String
Public dd As String
Public ttf As String
Public lac As String
Public odo As String
Public gle As String
End Class
我试过下面几行代码,但都没有用
Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim getPositionList As SmartTrack_PostionList = DirectCast(ser.Deserialize(Of SmartTrack_PostionList)(getResult.ToString), SmartTrack_PostionList)
和
Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim getPositionList As SmartTrack_Postion= DirectCast(ser.Deserialize(Of SmartTrack_Postion)(getResult.ToString), SmartTrack_Postion)
这确实有效,但我认为这是糟糕的编码。
Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer
getResult = getResult.Replace("[", "")
getResult = getResult.Replace("]", "")
Dim dict As Dictionary(Of String, String) = ser.Deserialize(Of Dictionary(Of String, String))(getResult)
如果有任何帮助,我将不胜感激,谢谢。
吉姆
最佳答案
您必须将 JSON 字符串反序列化为 List(Of SmartTrack_Position)
,例如
Dim ser = New System.Web.Script.Serialization.JavaScriptSerializer
Dim json = getResult.ToString()
Dim getPositionList = ser.Deserialize(Of List(Of SmartTrack_Postion))(json)
关于JSON中单个字符串的JSON反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22533717/