葬礼昨天 发表于 2017-3-4 16:53

C# 将Json数据在非web上用Newtonsoft(Json.NET)反序列化为List的一个技巧的

本帖最后由 葬礼昨天 于 2017-3-4 16:54 编辑

最近楼主遇到一个web service传送数据到winform的一个问题,当传输数据为自定义model类的List<>范型时,在反序列化的过程中用到的JsonConvert类的DeserializeObject方法会报“无法转换为List<自定义类>”的错误。

解决方法:
观察序列出来的Json文本可以发现,Json的数据形式为[{},{},{}],很明显这是数组的表达方式,之后相应的,
我们就可以将:
var result= JsonConvert.DeserializeObject<List<自定义类>>(Json文本);//这种会报错
转变为:
var result= JsonConvert.DeserializeObject<自定义类[]>(Json文本).ToList();//这样就可以了
                                                    //上面这是自定义类的数组形式




qq279202 发表于 2017-3-4 17:46

= =。。。

常飞 发表于 2017-3-4 18:16

学习了,最近正研究这个

当红灬依赖 发表于 2017-3-4 19:14

支持一下!!

哩个名字好难改 发表于 2017-3-4 21:19

本来不就是返回List集合吗?所以要TiList()呀

psx1lin 发表于 2017-3-4 23:12

好方式
学习了

sinceret 发表于 2017-3-5 00:31

Json是广义表结构,不是数组,直接转换肯定失败

葬礼昨天 发表于 2017-3-5 18:41

哩个名字好难改 发表于 2017-3-4 21:19
本来不就是返回List集合吗?所以要TiList()呀

不是,不能直接转,1楼的Json显示是数组
页: [1]
查看完整版本: C# 将Json数据在非web上用Newtonsoft(Json.NET)反序列化为List的一个技巧的