这个问题可能被问了十几次,但我找不到任何有用的东西......
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
}
Run Code Online (Sandbox Code Playgroud)
显然,这失败了:
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);
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何反序列化这个?并解释我做错了什么.我不需要底部数据(总记录)等等.实际上,我只需要开头的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; }
}
Run Code Online (Sandbox Code Playgroud)
由于您感兴趣的值列表似乎是各种类型的嵌套数组.这不能映射到您的OuterUser类,因为值不是key: value表示法,它们只是数组元素.
所以你必须反序列化RootObject,然后进入(或迭代)List<List<object>>:
var parsed = JsonConvert.DeserializeObject<RootObject>(rpl);
var firstUser = parsed.aaData[0];
var firstUserID = firstUser[0]; // 8120
Run Code Online (Sandbox Code Playgroud)