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

如何将指定JSON字符串反序列化为DataTable?

解决JSON转DataTable的问题

你的JSON结构是单条嵌套对象,而直接用JsonConvert.DeserializeObject<DataTable>只能解析JSON数组(多条数据集合),所以原代码无法运行。下面是可行的处理方案:

步骤说明

  1. 先解析JSON到可操作的对象(用JObject提取嵌套数据最方便)
  2. 手动创建DataTable并定义所需列
  3. 从解析后的JSON中提取数据,填充到DataTable的行里

完整代码示例

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

// 你的JSON字符串
string json = @"{
    ""data"": {
        ""id"": 33306,
        ""sport"": {
            ""id1"": ""FB"",
            ""id2"": ""HB""
        }
     }
}";

// 1. 解析JSON到JObject
JObject jsonObj = JObject.Parse(json);
JToken dataToken = jsonObj["data"];

// 2. 创建DataTable并定义列
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("sport_id1", typeof(string));
dt.Columns.Add("sport_id2", typeof(string));

// 3. 提取数据并添加到DataTable
DataRow row = dt.NewRow();
row["id"] = dataToken["id"].Value<int>();
row["sport_id1"] = dataToken["sport"]["id1"].Value<string>();
row["sport_id2"] = dataToken["sport"]["id2"].Value<string>();
dt.Rows.Add(row);

补充说明

如果你的JSON后续会变成多条data对象的数组(比如{"data": [{}, {}, ...]}),可以循环遍历数组里的每个对象,重复上述填充行的操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 05:40:30