【发布时间】:2013-12-19 12:30:11
【问题描述】:
我正在尝试将特殊数组反序列化为 Visual Basic 中的对象。 以下 json 数据由我使用的 web 服务传递;我感兴趣的部分是“数据”属性;基本上它是一个字符串数组的数组,每个数组代表一个对象:
{"timestamp":1385984969075,
"data":
[
[1590,null,null,null,0],
[1020,"data a",null,null,0],
[1025,"data b",null,null,0],
...
[2756,"data c",null,
[
{"id":2,"name":"Tom","mail":"tom@test.te","f_id":6,"md":1},
{"id":3,"name":"Carl","mail":"carl@test.te","f_id":6,"md":1}
]
,3],
[1277,"data d",null,null,0],
...
]}
在此示例中,每个数组的数据项 4 可能为 null 或包含对象数组。
我想将数组反序列化为对象列表,但我无法让它工作。我搜索了很多类似的帖子,但到目前为止我找不到任何有用的东西。
(我使用 Visual Basic.net 编写,但欢迎使用 C# 示例。)
有人可以帮忙吗?
【问题讨论】:
-
我反序列化为一个字符串数组列表。这种方法一开始是有效的,因为最初我没有答案,其中有一个对象数组。我使用 Dim answer As New contactGetAnswerObject answer = CType(JsonConvert.DeserializeObject(conn.serverResponse, GetType(contactGetAnswerObject)), contactGetAnswerObject) Public Class contactGetAnswerObject Public Property timestamp As Long Public Property data As List(Of string()) End Class,
-
您是否自己编写了这个生成 JSON 的 Web 服务?为什么你不能简单地拥有一个模型对象类,你可以从中创建一个对象列表/数组?
-
不,我没有自己编写网络服务。 Web 服务的输出是可变的;您必须在服务请求中发送所需属性的列表。然后您会收到一个数组,其中包含与请求匹配的每个项目所需属性的数组。
-
顺便说一句:我是 json.net 包的新手,所以如果我没有看到明显的内容,请原谅我。
-
发布你的课程,你也在映射这个 JSON 数据。
标签: c# arrays vb.net serialization json.net