反序列化对象列表而不覆盖对象

时间:2019-05-24 11:23:42

标签: c# json vb.net serialization

通过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 Format略微更改为

,所以直到昨天一切正常
[
    {
    " id ": " <entity token> ",
    " name ": " Datasource name ",
    " description ": " Datasource description ",
    " createTime ": 1190961927000 ,
    " modifyTime ": 1190962443000
    }
    {... (structure from above is repeated about 50 times)
    }
]

由于results对象丢失,我只是无法弄清楚如何更改代码以使其正常工作,并且由于我在json中没有总体对象,因此无法创建像Results_MSData这样的总体类。 (结果)了。我开始只使用DatasourceInfo类,并尝试循环该类,但我想有一个更简单的解决方案。另一个解决方案可能是仅通过字符串操作添加{" results ":[ ],以便获得与以前相同的Json,但这对我来说似乎也不专业。有人可以帮我从这里出去吗?也欢迎使用C#解决方案。

1 个答案:

答案 0 :(得分:1)

很容易,您不再需要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)