将json数组反序列化为.net类

时间:2010-02-16 10:29:11

标签: vb.net json serialization

我遇到了一些反序列化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))

4 个答案:

答案 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