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

如何在C#中将List<Model>转换为指定结构的JSON字符串?

在C#中将数据列表转换为带表头和值的目标格式

实现思路

核心是拆分表头(headers)与数据值(values),再将两者包装为对应结构,最终序列化(或拼接)成你需要的格式。以下是两种实用实现方式:


方式1:基于实体类(类型安全,推荐)

如果数据有固定结构,先定义实体类,再提取数据:

步骤1:定义实体类

public class CompanyRecord
{
    public int ID { get; set; }
    public string ENT_COMPANY1 { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

步骤2:准备数据源

var dataList = new List<CompanyRecord>
{
    new CompanyRecord 
    { 
        ID = 5658830, 
        ENT_COMPANY1 = "Support And Training Services Llc", 
        FirstName = "PAM", 
        LastName = "FINNESAND" 
    },
    new CompanyRecord 
    { 
        ID = 5658831, 
        ENT_COMPANY1 = "Training Services Llc", 
        FirstName = "Bob", 
        LastName = "MCCART" 
    }
};

步骤3:拆分表头和值

手动指定表头(避免反射开销,更直观),按顺序提取每个数据项的字段值:

// 定义表头
var headers = new List<string> { "ID", "ENT_COMPANY1", "FirstName", "LastName" };

// 提取值列表:按表头顺序取出每个字段的值
var values = dataList.Select(record => new List<object>
{
    record.ID,
    record.ENT_COMPANY1,
    record.FirstName,
    record.LastName
}).ToList();

步骤4:生成目标格式

使用.NET自带的System.Text.Json序列化(也可使用Newtonsoft.Json),并拼接成示例中的动态赋值格式:

using System.Text.Json;

// 包装成目标结构
var result = new
{
    values = values,
    headers = headers
};

// 序列化为格式化的JSON字符串
var json = JsonSerializer.Serialize(result, new JsonSerializerOptions { WriteIndented = true });

// 拼接成最终格式
var finalOutput = $"dynamic data = {json};";

// 输出或使用结果
Console.WriteLine(finalOutput);

方式2:基于匿名对象(无需实体类)

如果数据结构不固定,或不想定义实体类,可直接用匿名对象:

using System.Text.Json;

// 匿名数据源
var dataList = new List<object>
{
    new { ID = 5658830, ENT_COMPANY1 = "Support And Training Services Llc", FirstName = "PAM", LastName = "FINNESAND" },
    new { ID = 5658831, ENT_COMPANY1 = "Training Services Llc", FirstName = "Bob", LastName = "MCCART" }
};

// 手动指定表头
var headers = new List<string> { "ID", "ENT_COMPANY1", "FirstName", "LastName" };

// 提取值:通过反射获取匿名对象的属性值(需保证属性名与表头一致)
var values = dataList.Select(item => headers.Select(header => item.GetType().GetProperty(header).GetValue(item)).ToList()).ToList();

// 生成目标格式
var result = new { values, headers };
var json = JsonSerializer.Serialize(result, new JsonSerializerOptions { WriteIndented = true });
var finalOutput = $"dynamic data = {json};";

最终输出效果

运行后会得到你期望的格式:

dynamic data = {
  "values": [
    [
      5658830,
      "Support And Training Services Llc",
      "PAM",
      "FINNESAND"
    ],
    [
      5658831,
      "Training Services Llc",
      "Bob",
      "MCCART"
    ]
  ],
  "headers": [
    "ID",
    "ENT_COMPANY1",
    "FirstName",
    "LastName"
  ]
};

内容的提问来源于stack exchange,提问作者Mhd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:56:08