Разобрать динамический объект Json в классы VB - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть эта вложенная структура

enter image description here

и я хочу разобрать ее на классы.У меня есть этот код, чтобы получить файл JSON и десериализовать его

 Public Function getData(ByVal _token As String, ByVal _identifier As String) As Results_FullData
    Dim client = New RestClient(_baseURI)
    Dim request = New RestRequest("/datasource/{id}/data", Method.GET)
    request.AddParameter("id", _identifier)
    request.AddUrlSegment("id", _identifier)
    request.AddHeader("Authorization", "Bearer " + _token)
    request.AddHeader("environment", _environment)
    Dim jstr = client.Execute(request).Content
    Dim allData As Results_FullData = JsonConvert.DeserializeObject(Of Results_FullData)(jstr)

    Return allDATA

End Function

И построить эту структуру класса

Public Class Results_FullData
    Public Property results As List(Of DSContent)
End Class

Public Class DSContent
    Public Property userRunId As Long
    Public Property metaColumnValues As List(Of String)
    Public Property dataColumnValues As List(Of String)
End Class

Но при выполнении кода объект datasourceInfo пуст, и я не знаю,Зачем.Я думал, что могу просто принять решение этот ответ , но оно не работает.Я думаю, что часть List(Of String) неверна.Проблема может заключаться в том, что длина metaColumnValues ​​и dataColumnValues ​​различается для каждого объекта {}.Идея состоит в том, чтобы поместить его в строку и отделить его позже, поскольку значения , разделены внутри объекта

Кто-нибудь, кто может мне помочь здесь?

Редактировать: Пример данных:

{"result":[{"userRunId":"xxxxxxx","metaColumnValues":["9006409","20073"],"dataColumnValues":["","superior"]},{"userRunId":"xxxxxxx","metaColumnValues":["2345","235","1"],"dataColumnValues":["","superior", "test"]}]}

1 Ответ

0 голосов
/ 27 сентября 2018

В Results_FullData свойство называется results, но в примере JSON оно называется result.Кроме того, DSContent.userRunId объявлено как Long, хотя в JSON это свойство содержит значения String.Если вы исправите эти две вещи в своих классах данных, он правильно десериализует ваши примеры данных:

Public Sub Main()
    Dim json As String = "{""result"":[{""userRunId"":""xxxxxxx"",""metaColumnValues"":[""9006409"",""20073""],""dataColumnValues"":["""",""superior""]},{""userRunId"":""xxxxxxx"",""metaColumnValues"":[""2345"",""235"",""1""],""dataColumnValues"":["""",""superior"", ""test""]}]}"
    Dim allData As Results_FullData = JsonConvert.DeserializeObject(Of Results_FullData)(json)
End Sub

Public Class Results_FullData
    Public Property result As List(Of DSContent)
End Class

Public Class DSContent
    Public Property userRunId As String
    Public Property metaColumnValues As List(Of String)
    Public Property dataColumnValues As List(Of String)
End Class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...