从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数组反序列化JSON数据

如果您清理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