首页 新闻 搜索 专区 学院

list<t>类型的JSON数据如何反序列化

0
悬赏园豆:50 [已解决问题] 解决于 2016-01-25 19:17

{'order':'0','name':'fdgfdgdf','doi':'ddddddddddddd'},

{'order':'1','name':'gfdgfdgfdg','doi':'fdfsdfdsfffffffff'},

{'order':'2','name':'dfsdsfdsfdsf','doi':'dsfdfdfsF67D48DD4713'}

问题补充:

c#反序列化的代码,谢谢

晓皓的主页 晓皓 | 初学一级 | 园豆:157
提问于:2016-01-25 18:32
< >
分享
最佳答案
0

是要将Json转换成对象吗?JDynamic

你去看看这个。用着还不错。http://www.oschina.net/p/jdynamic  

或者选择使用 List<Model>  _model= new JavaScriptSerializer().Deserialize<List<Model>>(Json);

去序列化。

收获园豆:50
贫民窟大侠 | 老鸟四级 |园豆:4276 | 2016-01-25 18:38

 JsonNetJsonSerizlizer jsonxml = new JsonNetJsonSerizlizer();
 List<ResourceData> data = jsonxml.Deserizlize<List<ResourceData>>(json);

报错了

“Newtonsoft.Json.JsonSerializationException”类型的异常在 Newtonsoft.Json.dll 中发生,但未在用户代码中进行处理

其他信息: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[YHDB.Common.ResourceData]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.

To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.

Path 'order', line 1, position 9.

晓皓 | 园豆:157 (初学一级) | 2016-01-25 18:40

@晓皓: 这说明你的Json格式有问题。你先手动截取一下。http://tool.sufeinet.com/Code/HtmlToCsharp.aspx?type=jisujs&str=cb8b09dbe43b372b1c6a42084480e13d 

这个站里效验一下你的Json格式数据是不是正常的。

贫民窟大侠 | 园豆:4276 (老鸟四级) | 2016-01-25 18:44

@贫民窟大侠: 

晓皓 | 园豆:157 (初学一级) | 2016-01-25 18:52

@晓皓: 把你的整个串儿贴出来看看。这Json不是正确的格式。

贫民窟大侠 | 园豆:4276 (老鸟四级) | 2016-01-25 18:56

@贫民窟大侠: {
    'order': 0,
    'name': '财...',
    'doi': '48D96A5D-03B4-4cf4-BD4A-3D58F5932665'
},
{
    'order': 1,
    'name': '海...',
    'doi': 'C0DD45C9-37F6-470b-9C93-EA9A79763AE4'
},
{
    'order': 2,
    'name': '我...',
    'doi': 'A69BC6CA-60E5-455e-A9ED-F67D48DD4713'
},
{
    'order': 3,
    'name': '导...',
    'doi': 'f0b52c58-788d-4c73-b13e-5bf6e193efbc'
},
{
    'order': 4,
    'name': '中...',
    'doi': '90c34091-69a8-4aaa-995c-3e36098411cf'
}

晓皓 | 园豆:157 (初学一级) | 2016-01-25 18:57

@晓皓: 


[{
"order": 0,
"name": "财...",
"doi": "48D96A5D-03B4-4cf4-BD4A-3D58F5932665"
},
{
"order": 1,
"name": "海...",
"doi": "C0DD45C9-37F6-470b-9C93-EA9A79763AE4"
},
{
"order": 2,
"name": "我...",
"doi": "A69BC6CA-60E5-455e-A9ED-F67D48DD4713"
},
{
"order": 3,
"name": "导...",
"doi": "f0b52c58-788d-4c73-b13e-5bf6e193efbc"
},
{
"order": 4,
"name": "中...",
"doi": "90c34091-69a8-4aaa-995c-3e36098411cf"
}]

你的Json应该是这样的才对。不知你为何会得到这样的一个串儿

贫民窟大侠 | 园豆:4276 (老鸟四级) | 2016-01-25 19:10

@贫民窟大侠: 加上【】还是不对

晓皓 | 园豆:157 (初学一级) | 2016-01-25 19:11

@晓皓: 仔细看,我的是双引号!

贫民窟大侠 | 园豆:4276 (老鸟四级) | 2016-01-25 19:12

@贫民窟大侠: 不行就.Replace("\'","\""); 替换一下吧!你原始的Json串里肯定有斜杠的。再在前面加上"["后面加上"]"。回去了。拜拜!

贫民窟大侠 | 园豆:4276 (老鸟四级) | 2016-01-25 19:15

@贫民窟大侠: 果然是,多谢,结贴

晓皓 | 园豆:157 (初学一级) | 2016-01-25 19:17

@晓皓: 你没看到 order=4 的  doi 这一行 最后 差了一个 单引号吗?

DJLNET | 园豆:232 (菜鸟二级) | 2016-01-26 12:21
其他回答(1)
0

newtosoft里反序列化的时候可以传类型,JsonDes.....<List<T>>(string)

LGGGGG | 园豆:241 (菜鸟二级) | 2016-01-31 14:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册