0
我在嘗試使用JavaScriptSerializer
來序列化List(Of Int32)
。它似乎工作,直到我試圖Deserialize
對象回到名單,在這一點上,我得到這個錯誤:List(Int32)爲什麼將JSON序列化爲ArrayList?
Unable to cast object of type 'System.Collections.ArrayList' to type 'System.Collections.Generic.List`1[System.Int32]'.
我的代碼如下。任何人都可以請解釋爲什麼,即使當我明確地轉換爲正確的類型時,列表會自動保存爲ArrayList?
在此先感謝。
Private Property _serialized As String
Get
Return ViewState("_serialized")
End Get
Set(value As String)
ViewState("_serialized") = value
End Set
End Property
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim l As New List(Of Int32) From {2, 4, 6, 8, 10}
Dim d As New Dictionary(Of String, Object)
d.Add("myList", l)
Dim js As New Script.Serialization.JavaScriptSerializer
Me._serialized = js.Serialize(d)
End If
End Sub
Protected Sub btn_Click(sender As Object, e As EventArgs) Handles btn.Click
Dim js As New Script.Serialization.JavaScriptSerializer
Dim d As Dictionary(Of String, Object) = js.Deserialize(Of Dictionary(Of String, Object))(Me._serialized)
Dim l As List(Of Int32) = CType(d.Item("myList"), List(Of Int32))
For Each i As Int32 In l
Trace.Warn(i.ToString)
Next
End Sub
誤差線是這樣的:
Dim l As List(Of Int32) = CType(d.Item("myList"), List(Of Int32))
太棒了。我已經使用.NET近十年了,從來不知道'.Cast(Of Integer)'。像魅力一樣工作 - 非常感謝你! – EvilDr