我遇到了一些反序列化json数据,获取InvalidCastExceptions等问题。
有人能指出我正确的方向吗?
这是我想要反序列化的json;
[{ “的OrderId”:0, “名称”: “摘要”, “MAXLEN”: “200”},{ “的OrderId”:1, “名称”: “详细信息”, “MAXLEN”: “0” }]
这是我的代码;
Public Class jsTextArea
Public OrderId As Integer
Public Name As String
Public MaxLen As String
End Class
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim rawdata = js.DeserializeObject(textAreaJson)
Dim lstTextAreas As List(Of jsTextArea) = CType(rawdata, List(Of jsTextArea))
答案 0 :(得分:5)
OrderId是你的json中的一个Int(注意这些值没有引号),但你在“jsTextArea”中将它声明为String。此外,除非返回rawdata的类型具有对List(Of jsTextArea)的强制转换,否则它可能不会显示您所显示的代码。
<强>更新强> 要将数据输出到List(Of jsTextArea),请尝试以下操作:
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim lstTextAreas = js.Deserialize(Of List(Of jsTextArea))(textAreaJson)
答案 1 :(得分:2)
在一条线上完成所有工作是一种享受;
Dim lstTextAreas As List(Of jsTextArea) = js.Deserialize(textAreaJson, GetType(List(Of jsTextArea)))
答案 2 :(得分:0)
Dim textAreaJson As String = "[{""OrderId"":0,""Name"":""Summary"",""MaxLen"":""200""},{""OrderId"":1,""Name"":""Details"",""MaxLen"":""0""}]"
Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
Dim lstTextAreas As jsTextArea() = js.Deserialize(Of jsTextArea())(textAreaJson)
答案 3 :(得分:0)
这是一个反序列化任何类型的JSON的函数:
Public Function DeserializeJson(Of T)(json As String) As T
Return New JavaScriptSerializer().Deserialize(Of T)(json)
End Function