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

如何将含多JSON对象的字符串反序列化为DataSet?

将嵌套JSON反序列化为DataSet的方法

针对你提供的JSON结构,要生成包含3个DataTable的DataSet,可通过以下两种常用方法实现(基于.NET生态下的Newtonsoft.Json库,需先安装对应NuGet包):

方法一:手动构建DataSet(灵活自定义表结构)

先解析JSON对象,再逐个创建DataTable并添加到DataSet,适合需要自定义表名、字段类型的场景:

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

// 你的目标JSON字符串
string json = @"{""Name"": ""Jamal"",""Age"": ""42"",""City"": ""Mumbai"",""EducationalInfo"": [{""Degree"": ""BE"",""University"": ""Cristian Universiy""}, {""Degree"": ""ME"",""University"": ""Texas University""}],""LoanInfo"": [{""LoanType"": ""Car Loan"",""Amount"": ""1000000""}, {""LoanType"": ""Personal"",""Amount"": ""200000""}]}";

// 1. 解析JSON为JObject
JObject jsonObj = JObject.Parse(json);

// 2. 初始化DataSet
DataSet targetDataSet = new DataSet();

// 3. 创建个人信息表
DataTable personalTable = new DataTable("PersonalInfo");
personalTable.Columns.Add("Name", typeof(string));
personalTable.Columns.Add("Age", typeof(string));
personalTable.Columns.Add("City", typeof(string));
// 填充行数据
personalTable.Rows.Add(jsonObj["Name"].ToString(), jsonObj["Age"].ToString(), jsonObj["City"].ToString());
targetDataSet.Tables.Add(personalTable);

// 4. 转换教育信息数组为DataTable并添加
DataTable eduTable = jsonObj["EducationalInfo"].ToObject<DataTable>();
eduTable.TableName = "EducationalInfo";
targetDataSet.Tables.Add(eduTable);

// 5. 转换贷款信息数组为DataTable并添加
DataTable loanTable = jsonObj["LoanInfo"].ToObject<DataTable>();
loanTable.TableName = "LoanInfo";
targetDataSet.Tables.Add(loanTable);

方法二:直接反序列化(简洁高效)

DataSet默认会将JSON中顶级的数组对象识别为DataTable,因此只需将原JSON的顶级字段包装成数组,调整结构后即可直接反序列化:

调整后的JSON结构

{
  "PersonalInfo": [{"Name": "Jamal", "Age": "42", "City": "Mumbai"}],
  "EducationalInfo": [{"Degree": "BE", "University": "Cristian Universiy"}, {"Degree": "ME", "University": "Texas University"}],
  "LoanInfo": [{"LoanType": "Car Loan", "Amount": "1000000"}, {"LoanType": "Personal", "Amount": "200000"}]
}

反序列化代码

using Newtonsoft.Json;
using System.Data;

// 调整后的JSON字符串
string adjustedJson = @"{""PersonalInfo"": [{""Name"": ""Jamal"",""Age"": ""42"",""City"": ""Mumbai""}],""EducationalInfo"": [{""Degree"": ""BE"",""University"": ""Cristian Universiy""}, {""Degree"": ""ME"",""University"": ""Texas University""}],""LoanInfo"": [{""LoanType"": ""Car Loan"",""Amount"": ""1000000""}, {""LoanType"": ""Personal"",""Amount"": ""200000""}]}";

// 直接反序列化为DataSet
DataSet targetDataSet = JsonConvert.DeserializeObject<DataSet>(adjustedJson);

注意事项

  • 需确保项目已安装Newtonsoft.Json NuGet包,这是.NET处理JSON的主流工具。
  • 方法一适合需要精细控制表结构(如修改字段类型、自定义表名)的场景;方法二更适合快速转换,无需额外自定义逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 21:07:23