从JSON数组反序列化JSON数据

nig*_*awk 0 c# json

这个问题可能被问了十几次,但我找不到任何有用的东西......

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,用户名和电子邮件.注释代码也失败了,我认为这是解决方案的一部分.

Cod*_*ter 5

如果你清理你的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)