【发布时间】:2011-05-12 14:20:27
【问题描述】:
当我可以调用第 3 方 api 并取回单个类的数据时,一切都可以使用此代码进行反序列化
TheUser me = jsonSerializer.Deserialize(response, typeof(TheUser)) as TheUser
当我尝试反序列化作为数组的 JSON 响应内容时出现问题,例如
{
"data": [
{
"name": "A Jones",
"id": "500015763"
},
{
"name": "B Smith",
"id": "504986213"
},
{
"name": "C Brown",
"id": "509034361"
}
]
}
只有在“数据”成员周围使用自定义包装类并且该成员必须是 List<object> 类型时,我才能使序列化工作。如果它的类型为List<TheUser>,我会从JsonParser DesializeType 方法中得到ArgumentException。
我最初尝试在没有这样的包装类型的情况下进行序列化
List<TheUser> freinds = jsonSerializer.Deserialize(response, typeof(List<TheUser>)) as List<TheUser>;
但这只会给我一个空集合。当然,我必须能够将数组反序列化为强类型列表。
【问题讨论】:
-
我也有同样的问题;如果您将
response反序列化为dynamicvar 而不是TheUser,那么deserialized.data可以作为JArray使用——知道是否可以将其转换为List<something>? -
看来你应该可以(link)。
标签: c# windows-phone-7 json.net hammock