GordonBy
GordonBy

Reputation: 3407

Deserializing json array into .net class

I'm having problems deserializing some json data, getting InvalidCastExceptions and the like.

Can anyone point me in the right direction?

Here's the json i'm wanting to deserialize;

[{"OrderId":0,"Name":"Summary","MaxLen":"200"},{"OrderId":1,"Name":"Details","MaxLen":"0"}]

Here's my code;

  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))

Upvotes: 5

Views: 21568

Answers (4)

mikro
mikro

Reputation: 525

Here's a function to Deserialize JSON of any type:

    Public Function DeserializeJson(Of T)(json As String) As T
        Return New JavaScriptSerializer().Deserialize(Of T)(json)
    End Function

Upvotes: 0

Sky Sanders
Sky Sanders

Reputation: 37084

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)

Upvotes: 0

GordonBy
GordonBy

Reputation: 3407

Doing it all on one line worked a treat;

Dim lstTextAreas As List(Of jsTextArea) = js.Deserialize(textAreaJson, GetType(List(Of jsTextArea)))

Upvotes: 2

Rob
Rob

Reputation: 45771

OrderId is an Int in your json (note the lack fo quotes round the values), but you're declaring it as String in "jsTextArea". Also, unless the type that rawdata is returned as has a cast to List(Of jsTextArea), which it probably doesn't the code you've shown won't work.

Update To get the data out into a List(Of jsTextArea) try the following:

    Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
    Dim lstTextAreas = js.Deserialize(Of List(Of jsTextArea))(textAreaJson)

Upvotes: 7

Related Questions