从JSON数组反序列化JSON数据
本文关键字:JSON 数据 反序列化 数组 | 更新日期: 2023-09-27 18:07:19
这个问题可能被问了十几次了,但我找不到任何有用的东西,所以…
JSON数据是这样的
{
"aaData": [
[
8120,
"username",
"username@hotmail.com",
"'/",
"CUSTOMER ( SellerName )",
"name",
"<span class='"label label-danger'">2015-08-05<'/span>",
"<a class='"btn btn-xs btn-primary manageDevices'" href='"#'" id='"manageDevices'" data-customerid='"8120'" data-toggle='"modal'">1<'/a>",
"<a id='"8120'" href='"http:'/'/cms.*********.com:8081'/manageCustomers?customerId=8120'" class='"btn btn-xs btn-primary'">View<'/a>",
"YES"
],
....
]
],
"sEcho": "NULL",
"iTotalRecords": 65,
"iTotalDisplayRecords": 65
}
显然,这失败了:
private class OuterUser
{
string id { get; set; }
string username { get; set; }
string line { get; set; }
string reseller { get; set; }
string username2 { get; set; }
string date1 { get; set; }
string manage { get; set; }
string manageUser { get; set; }
string active { get; set; }
}
dynamic jsonDe = JsonConvert.DeserializeObject<OuterUser>(rpl);
//dynamic j = JsonConvert.DeserializeObject<List<OuterUser>>(rpl);
有人知道怎么反序列化这个吗?解释我做错了什么。我不需要底部的数据(总记录)等等。实际上,我只需要的是开始,用户名和电子邮件的ID。注释代码也失败了,我认为这是解决方案的一部分。
如果您清理JSON(删除....]
)并将其发布到Json2Csharp.com,您将得到:
public class RootObject
{
public List<List<object>> aaData { get; set; }
public string sEcho { get; set; }
public int iTotalRecords { get; set; }
public int iTotalDisplayRecords { get; set; }
}
因为您感兴趣的值列表似乎是各种类型的嵌套数组。这不能映射到你的OuterUser
类,因为值不是在key: value
符号,他们只是数组元素。
因此,您必须反序列化到RootObject
,然后进入(或迭代)List<List<object>>
:
var parsed = JsonConvert.DeserializeObject<RootObject>(rpl);
var firstUser = parsed.aaData[0];
var firstUserID = firstUser[0]; // 8120