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

如何将API返回的columns-rows结构JSON转换为DataTable?

解决方案:将特定结构JSON转换为DataTable

我明白你现在的困扰——已经搞定了DataTable转特定结构JSON的反向操作,却卡在了把JSON转回DataTable这一步。别担心,我们可以借助你之前用的Newtonsoft.Json(Json.NET)来实现这个正向转换,步骤很清晰:

步骤1:定义对应的数据结构(可选但更清晰)

首先,我们可以创建一个和JSON结构匹配的类,让反序列化过程更直观:

public class JsonTableModel
{
    [JsonProperty("columns")]
    public List<string> ColumnNames { get; set; }
    
    [JsonProperty("rows")]
    public List<List<object>> RowData { get; set; }
}

JsonProperty属性是为了和JSON里的键名严格对应,避免大小写或命名风格差异导致的解析问题。

步骤2:编写转换方法

接下来编写核心转换逻辑:先把JSON字符串反序列化成模型实例,再逐步构建DataTable:

using Newtonsoft.Json;
using System.Data;
using System.Collections.Generic;

public static DataTable ConvertJsonToDataTable(string jsonString)
{
    // 1. 反序列化JSON到模型
    var jsonTable = JsonConvert.DeserializeObject<JsonTableModel>(jsonString);
    
    // 2. 创建空的DataTable
    var dataTable = new DataTable();
    
    // 3. 添加列:遍历columns列表,逐个创建DataColumn
    foreach (var columnName in jsonTable.ColumnNames)
    {
        dataTable.Columns.Add(columnName);
        // 如果需要指定列的数据类型,可在这里调整,比如:
        // dataTable.Columns.Add(columnName, typeof(string));
    }
    
    // 4. 添加行数据:遍历rows列表,把每一行的object数组转成DataRow
    foreach (var row in jsonTable.RowData)
    {
        var dataRow = dataTable.NewRow();
        for (int i = 0; i < row.Count; i++)
        {
            dataRow[i] = row[i];
        }
        dataTable.Rows.Add(dataRow);
    }
    
    return dataTable;
}

步骤3:测试使用

用你提供的JSON测试这个方法:

string json = @"
{ 
    ""columns"": [ ""firstName"", ""lastName"", ""email"", ""password"" ], 
    ""rows"": [ 
        [ ""Alpha"", ""Tango"", ""AlphaTango@domain.com"", ""123"" ], 
        [ ""Charle"", ""Tango"", ""CharlieTango@domain.com"", ""456"" ] 
    ] 
}";

DataTable resultTable = ConvertJsonToDataTable(json);

额外小技巧

如果不想创建额外的类,也可以直接用JObject解析JSON:

var jsonObj = JObject.Parse(jsonString);
var columns = jsonObj["columns"].ToObject<List<string>>();
var rows = jsonObj["rows"].ToObject<List<List<object>>>();
// 后续构建DataTable的逻辑和上面一致

这样就能完美匹配你之前的反向转换逻辑,实现JSON到DataTable的正向转换啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:46:38