使用JavaScriptSerializer反序列化JSON字典列表
问题描述:
我一直在反序列化一些JSON,并且在调试时在立即窗口中出现以下错误:“在System.Web中发生了类型'System.InvalidOperationException'的第一个机会异常.Extensions.dll”使用JavaScriptSerializer反序列化JSON字典列表
这里是JSON我试图反序列化:
{ "Asks":[ [ 919, 11.62026440 ], [ 919.06, 0.07269375 ] ], "Bids":[ [ 901.44, 0.01000050 ], [ 901, 0.25000000 ] ] }
我的类:
<Serializable()>
Public Class orderbookJsonDeserializerClass
Private _asks As List(Of Dictionary(Of Double, Double))
Public Property asks() As List(Of Dictionary(Of Double, Double))
Get
Return _asks
End Get
Set(ByVal value As List(Of Dictionary(Of Double, Double)))
_asks = value
End Set
End Property
Private _bids As List(Of Dictionary(Of Double, Double))
Public Property bids() As List(Of Dictionary(Of Double, Double))
Get
Return _bids
End Get
Set(ByVal value As List(Of Dictionary(Of Double, Double)))
_bids = value
End Set
End Property
End Class
我的代码:
Dim js As New JavaScriptSerializer
Dim testObj = js.Deserialize(Of orderbookJsonDeserializerClass)(responseFromServer)
调试时,我得到前面提到的错误时,它试图执行 “昏暗testObj = js.Deserialize(OF orderbookJsonDeserializerClass)(responseFromServer)” 指令。
答
所以我觉得我这样做太复杂了。使一类的两个对象,然后尝试不同的组合之后,我终于想出了正确的类反序列化JSON到:通过
<Serializable()>
Public Class genericOrderbook
Public Asks As New List(Of List(Of Double))
Public Bids As New List(Of List(Of Double))
End Class
现在我可以循环并获得所有投标和要求,以及所有爵士乐。问题解决了!