Десериализация массива json в класс .net - PullRequest
4 голосов
/ 16 февраля 2010

У меня проблемы с десериализацией некоторых данных 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 ]

5 голосов
/ 16 февраля 2010

OrderId - это Int в вашем json (обратите внимание на отсутствие кавычек вокруг значений), но вы объявляете его как String в "jsTextArea". Кроме того, если тип, для которого возвращаются необработанные данные, не имеет приведение к списку (Of jsTextArea), который, вероятно, не соответствует указанному вами коду, не будет работать.

Обновление Чтобы вывести данные в список (Of jsTextArea), попробуйте следующее:

    Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
    Dim lstTextAreas = js.Deserialize(Of List(Of jsTextArea))(textAreaJson)
2 голосов
/ 16 февраля 2010

Делая все это в одной строке, получалось удовольствие;

Dim lstTextAreas As List(Of jsTextArea) = js.Deserialize(textAreaJson, GetType(List(Of jsTextArea)))
0 голосов
/ 30 октября 2016

Вот функция для десериализации JSON любого типа:

    Public Function DeserializeJson(Of T)(json As String) As T
        Return New JavaScriptSerializer().Deserialize(Of T)(json)
    End Function
0 голосов
/ 16 февраля 2010
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...