我正在尝试将Facebook好友图形API调用反序列化为对象列表 . JSON对象如下所示:
{"data":[{"id":"518523721","name":"ftyft"},
{"id":"527032438","name":"ftyftyf"},
{"id":"527572047","name":"ftgft"},
{"id":"531141884","name":"ftftft"},
{"id":"532652067","name"...
List<EFacebook> facebooks = new JavaScriptSerializer().Deserialize<List<EFacebook>>(result);
它不起作用,因为原始对象无效 .
我怎样才能反序化呢?
6 回答
你需要创建一个这样的结构:
然后你应该能够做到:
我的 class 名称只是一个例子 . 你应该使用专有名称 .
添加样品测试:
生产环境 :
有时我更喜欢动态对象:
我们可以很容易地在字典和JavaScriptSerializer的帮助下解析json . 这是我从ashx文件解析json的示例代码 .
为您自动生成这些类的一个好方法是复制JSON输出并将其放在此处:
http://json2csharp.com/
它将为您提供一个起点来修改您的类以进行反序列化 .
Newtonsoft.JSON
对于这种情况是一个很好的解决方案 . 此外Newtonsof.JSON
比其他如JavaScriptSerializer
,DataContractJsonSerializer
更快 .在此示例中,您可以执行以下操作:
然后你可以将jsonData转换为
JArray
,你可以使用for循环来获取每次迭代的数据 . 另外,我想添加一些东西 .使用动态对象并使用Newtonsoft序列化是一个不错的选择 .
我同意Icarus(如果可以,我会评论),但不使用 CustomObject 类,我会使用 Dictionary (如果facebook添加了一些内容) .
要么