Десериализовать список объектов без всеобъемлющего объекта - PullRequest
1 голос
/ 24 мая 2019

С помощью метода API я получил Json в следующем формате:

{" results ": [
    {
    " id ": " <entity token> ",
    " name ": " name ",
    " description ": " Datasource description ",
    " createTime ": 1190961927000 ,
    " modifyTime ": 1190962443000
    }
    {... (structure from above is repeated about 50 times)
    }
]}

Я написал класс Poco

Public Class Results_DSMeta
    Public Property results As List(Of DatasourceInfo)
End Class

Public Class DatasourceInfo
    Public Property id As String
    Public Property name As String
    Public Property description As String
    Public Property created As ULong
    Public Property modified As ULong
End Class

И десериализовано Json с

Dim datasourceInfo As Results_DSMeta = JsonConvert.DeserializeObject(Of Results_DSMeta)(jstr)

До вчерашнего дня все работало нормально, поскольку провайдер слегка изменил формат Json на

[
    {
    " id ": " <entity token> ",
    " name ": " Datasource name ",
    " description ": " Datasource description ",
    " createTime ": 1190961927000 ,
    " modifyTime ": 1190962443000
    }
    {... (structure from above is repeated about 50 times)
    }
]

Я просто не могу понять, как изменить свой код, чтобы это работало, поскольку отсутствует объект results, и я не могу создать всеобъемлющий класс, такой как Results_MSData, поскольку у меня больше нет всеобъемлющего объекта в json (результаты) , Я начал работать только с классом DatasourceInfo и попытался зациклить его, но, думаю, есть гораздо более простое решение. Другим решением может быть просто добавить {" results ":[ ] с помощью манипуляции со строками, чтобы я получил тот же Json, что и раньше, но мне это тоже непрофессионально. Может кто-нибудь помочь мне здесь? Решение C # тоже приветствуется.

1 Ответ

1 голос
/ 24 мая 2019

По сути, вам больше не нужен класс Results_DSMeta, только класс DatasourceInfo.Данные, отправленные провайдером, остаются списком, поэтому вместо определения этого списка:

Dim datasourceInfo As Results_DSMeta = JsonConvert.DeserializeObject(Of Results_DSMeta)(jstr)

Вы можете использовать:

Dim datasourceInfo As List(Of DatasourceInfo) = JsonConvert.DeserializeObject(Of List(Of DatasourceInfo))(jstr)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...