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

如何将DataTable序列化为JSON并按指定字段分组?Newtonsoft能否实现

当然可以轻松实现,你不需要额外写复杂的自定义逻辑,两种常见实现方式如下:

方案1:直接对DataTable分组后序列化(推荐)

不需要先序列化DataTable再处理JSON,直接在内存中对DataTable做分组后再序列化即可,代码示例:

using Newtonsoft.Json;
using System.Data;
using System.Linq;

// 替换为你实际的DataTable对象
DataTable dt = GetYourDataTable();

var groupedData = dt.AsEnumerable()
    .GroupBy(row => row.Field<string>("value"))
    .Select(g => new
    {
        value = g.Key,
        members = g.Select(row => new
        {
            id = row.Field<string>("id"),
            name = row.Field<string>("name")
        })
    });

// 序列化后直接得到目标格式的JSON
string resultJson = JsonConvert.SerializeObject(groupedData, Formatting.Indented);

方案2:处理已序列化的原始JSON

如果你已经拿到了序列化后的原始JSON字符串,也可以用Newtonsoft的Linq to JSON能力直接处理:

using Newtonsoft.Json.Linq;

// yourOriginalJsonOutput替换为你当前得到的序列化结果,补全外层括号转为合法JSON数组
string rawJson = "[" + yourOriginalJsonOutput + "]";
JArray rawArray = JArray.Parse(rawJson);

var groupedJArray = new JArray(
    rawArray.GroupBy(item => (string)item["value"])
    .Select(g => new JObject(
        new JProperty("value", g.Key),
        new JProperty("members", new JArray(
            g.Select(item => new JObject(
                new JProperty("id", item["id"]),
                new JProperty("name", item["name"])
            ))
        ))
    ))
);

string resultJson = groupedJArray.ToString(Formatting.Indented);

两种方案都只用几行代码就能完成需求,不需要额外开发自定义序列化器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:06:11