VB.net JSON Deserialize
У меня есть следующая строка JSON для десериализации:
[{"application_id":"1","application_package":"abc"},{"application_id":"2","application_package":"xyz"}]
Я использую метод DataContractJsonSerializer.
- Как я могу разбирать JSON с C #?
- Как реализовать пользовательский JsonConverter в JSON.NET для десериализации списка объектов базового classа?
- Уничтожить XML-объект с помощью динамического
- Как сериализовать объект, который включает BufferedImages
- Уничтожить вложенные JSON в объекты C #
Он состоит из массива элементов, и я не смог найти пример использования VB.Net, который может десериализовать эту структуру. У меня есть следующий class приложения для хранения этой информации:
_ Public Class ApplicationItem Public Property application_id As String Public Property application_package As String End Class
- Можно ли указать путь в атрибуте для сопоставления свойства в моем classе с дочерним свойством в моем JSON?
- Полиморфизм в аннотациях jacksonа: использование @JsonTypeInfo
- Преобразование int для bool с Json.Net
- Дессериализация данных JSON на C # с использованием JSON.NET
- Как использовать JSON.NET для десериализации в вложенный / рекурсивный словарь и список?
- Json.NET Отключить десериализацию в DateTime
- Json.NET: десериализация вложенных словарей
- Сериализация Java - java.io.InvalidClassException локальный class несовместим
Я бы рекомендовал вам использовать JavaScriptSerializer
DataContractJsonSerializer
. Причины:
-
JavaScriptSerializer
быстрее по сравнению сDataContractJsonSerializer
-
DataContractJsonSerializer
требует больше кода, чемJavaScriptSerializer
для простой сериализации.
Вам не понадобятся атрибут DataContract
и DataMember
для использования вместе с JavaScriptSerializer
Используйте этот class данных
_ Public Class ApplicationItem Public Property application_id() As String Get Return m_application_id End Get Set m_application_id = Value End Set End Property Private m_application_id As String Public Property application_package() As String Get Return m_application_package End Get Set m_application_package = Value End Set End Property Private m_application_package As String End Class
И используйте это для десериализации jsonText
:
Dim jss As New JavaScriptSerializer() Dim dict = jss.Deserialize(Of List(Of ApplicationItem))(jsonText)
Если вы все еще хотите использовать DataContractJsonSerializer
, вы можете использовать этот код ниже для десериализации:
Dim obj As New List(Of ApplicationItem)() Dim ms As New MemoryStream(Encoding.Unicode.GetBytes(json)) Dim serializer As New System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.[GetType]()) obj = DirectCast(serializer.ReadObject(ms), List(Of ApplicationItem)) ms.Close() ms.Dispose()
Courtesy: Используемый конвертер кода Telerik
Вот самый простой способ десериализации JSON в объект (с использованием .NET 4):
Пример JSON:
{ "dogs":[], "chickens":[ { "name":"Macey", "eggs":7 }, { "name":"Alfred", "eggs":2 } ] }
VB.NET:
Try Dim j As Object = New JavaScriptSerializer().Deserialize(Of Object)(JSONString) Dim a = j("dogs") ' returns empty Object() array Dim b = j("chickens")(0) ' returns Dictionary(Of String, Object) Dim c = j("chickens")(0)("name") ' returns String "Macey" Dim d = j("chickens")(1)("eggs") ' returns Integer 2 Catch ex As Exception ' in case the structure of the object is not what we expected. End Try
Это работает для меня:
// Get the HttpWebRequest reaponse string Response = loResponseStream.ReadToEnd(); var jss = new JavaScriptSerializer(); var dict = jss.Deserialize>(Response); string carrier = (dict["Response"]["carrier"]);