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

C#如何将SQL表多列逗号分隔字符串转换为目标JSON结构

实现方案

你只需要将两列的逗号分隔值按下标对齐拆分,组装为对应对象结构后序列化即可,以下是基于ASP.NET Core内置System.Text.Json的可直接复用的实现代码,无需引入第三方依赖:

  • 先读取数据库中单行的两个原始字段值
  • 按逗号拆分两个字段,做长度校验避免数据错位、索引越界
  • 按下标一一对应组装明细项,包装为目标结构后序列化
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;

// 替换为你从数据库读取到的实际原始值
string column1FromDb = "12,13";
string column2FromDb = "abc,xyx";

// 拆分字符串,自动过滤空条目、去除值前后空格
string[] col1Values = column1FromDb.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
string[] col2Values = column2FromDb.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);

// 校验两列拆分后长度一致,避免数据错位
if (col1Values.Length != col2Values.Length)
{
    throw new InvalidDataException("两列逗号分隔数据条目数不匹配,无法组装");
}

// 组装明细列表
var detailList = new List<object>();
for (int i = 0; i < col1Values.Length; i++)
{
    detailList.Add(new
    {
        column1 = col1Values[i],
        column2 = col2Values[i]
    });
}

// 包装为最终输出结构
var outputObj = new
{
    Details = detailList
};

// 序列化为带缩进的JSON格式,直接返回即可
var jsonSetting = new JsonSerializerOptions { WriteIndented = true };
string targetJson = JsonSerializer.Serialize(outputObj, jsonSetting);

运行上述代码生成的JSON和你给出的期望结构完全一致:

{
  "Details": [
    {
      "column1": "12",
      "column2": "abc"
    },
    {
      "column1": "13",
      "column2": "xyx"
    }
  ]
}

如果你项目使用Newtonsoft.Json做序列化,拆分、组装逻辑完全不变,只需要将最后序列化步骤替换为JsonConvert.SerializeObject(outputObj, Formatting.Indented)即可。

注意事项

  • 拆分时加StringSplitOptions.TrimEntries是为了兼容原始数据逗号前后带空格的场景,比如"12, 13"这类值也能正常解析
  • 长度校验逻辑不要省略,否则当某一列多一个/少一个分隔值时,会出现数据错位的问题
  • 如果你的业务数据中本身包含逗号(比如值为带逗号的文本),不要直接用普通Split拆分,需要先根据你的转义规则调整拆分逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:39:43