You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何从嵌套JSON对象提取值并转换为列表

C#中如何从嵌套JSON对象提取值并转换为列表

嘿,刚接触C#的你是不是正头疼怎么把JSON字符串转换成规整的列表呀?别担心,我来给你一步步捋清楚怎么弄!

首先,咱们得先明确目标:要把JSON里的firstName、lastName、departmentID提取出来,转成类似下面这样的结构化列表:

firstName   lastName  departmentID
John        Doe       AAA111
John2       Doe2      BBB222

第一步:定义对应实体类

不管用哪种JSON解析方式,先定义一个和要提取字段匹配的实体类,这样后续解析会非常方便:

public class Employee
{
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string departmentID { get; set; }
}

方法一:用C#内置的System.Text.Json(无需额外安装包)

这是微软官方自带的JSON处理库,不用额外装NuGet包,直接就能用。假设你的JSON是数组形式(就像你代码里写的开头是[]),代码可以这么写:

public IActionResult JsonTest()
{
    // 先把完整的JSON字符串补全,示例如下
    var respJSON = @"
        [
            {
                ""firstName"": ""John"",
                ""lastName"": ""Doe"",
                ""departmentID"": ""AAA111""
            },
            {
                ""firstName"": ""John2"",
                ""lastName"": ""Doe2"",
                ""departmentID"": ""BBB222""
            }
        ]";

    // 反序列化成List<Employee>
    var employeeList = System.Text.Json.JsonSerializer.Deserialize<List<Employee>>(respJSON);

    // 要是你想输出成表格样式的文本,直接遍历拼接就行
    foreach (var emp in employeeList)
    {
        Console.WriteLine($"{emp.firstName,-12} {emp.lastName,-10} {emp.departmentID}");
    }

    return Ok(employeeList);
}

方法二:用Newtonsoft.Json(第三方库,灵活度更高)

如果你的JSON结构比较复杂,Newtonsoft.Json(也就是Json.NET)会更灵活,不过需要先在NuGet里安装Newtonsoft.Json包。代码思路和内置库差不多:

public IActionResult JsonTest()
{
    var respJSON = @"
        [
            {
                ""firstName"": ""John"",
                ""lastName"": ""Doe"",
                ""departmentID"": ""AAA111""
            },
            {
                ""firstName"": ""John2"",
                ""lastName"": ""Doe2"",
                ""departmentID"": ""BBB222""
            }
        ]";

    // 反序列化成List<Employee>
    var employeeList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Employee>>(respJSON);

    // 同样可以遍历输出表格样式
    foreach (var emp in employeeList)
    {
        Console.WriteLine($"{emp.firstName,-12} {emp.lastName,-10} {emp.departmentID}");
    }

    return Ok(employeeList);
}

要是JSON是嵌套结构怎么办?

比如你的JSON里字段是嵌套在子对象里的,像这样:

[
    {
        "personInfo": {
            "firstName": "John",
            "lastName": "Doe"
        },
        "deptInfo": {
            "departmentID": "AAA111"
        }
    }
]

那也不用慌,咱们可以用LINQ配合匿名类来提取值:

var options = new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true };
var rawItems = System.Text.Json.JsonSerializer.Deserialize<List<dynamic>>(respJSON, options);

// 从嵌套对象里提取值,转成目标列表
var employeeList = rawItems.Select(item => new Employee
{
    firstName = item.personInfo.firstName,
    lastName = item.personInfo.lastName,
    departmentID = item.deptInfo.departmentID
}).ToList();

按照这个思路来,不管JSON是简单数组还是嵌套结构,都能轻松提取出你要的字段,转成想要的列表啦!

备注:内容来源于stack exchange,提问作者Milacay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 16:49:34