c# - 将 Json 对象转换为 DataTable

废话不多说直接上代码
 string s = "{\n  \"Flag\": 1,\n  \"Data\": [\n    {\n      \"id\": 37,\n      \"pid\": \"105226\",\n      \"PName\": \"韩友庆\",\n      \"IName\": \"X线计算机体层(CT)平扫(1层-8层)\",\n      \"CName\": \"超声五室\",\n      \"Times\": \"10:00:00-14:00:00\",\n      \"checkdate\": \"2023-07-12T00:00:00\"\n    },\n    {\n      \"id\": 38,\n      \"pid\": \"105219\",\n      \"PName\": \"翟金花\",\n      \"IName\": \"X线计算机体层(CT)平扫(1层-8层)\",\n      \"CName\": \"超声五室\",\n      \"Times\": \"10:00:00-14:00:00\",\n      \"checkdate\": \"2023-07-12T00:00:00\"\n    }\n  ],\n  \"Msg\": \"\"\n}";
 JObject json = JObject.Parse(s);
JArray array = new JArray();
var d = json["Data"];
foreach(var a in d){
    array.Add(a);
}
           
dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());

亲测可用!

在这里和其他论坛的一些帖子中,我发现引用了这段代码,用于将 Json 对象转换为 DataTable:

DataTable dt = (DataTable)JsonConvert.DeserializeObject(json, (typeof(DataTable)));  

我无法让它工作。它总是抛出 JsonSerializationException。我错过了什么吗?

这是显示错误的简单示例:

JObject query = new JObject();
JObject results = new JObject();

results.Add("Name", "Blue Umbrella");
results.Add("Price", 100);

query.Add("results", results);

DataTable dt = (DataTable)JsonConvert.DeserializeObject(query.ToString(), (typeof(DataTable)));

我做错了什么?

最佳答案

使用类似的东西:

JArray array = new JArray();

{
    JObject row = new JObject();

    row.Add("Name", "Blue Umbrella");
    row.Add("Price", 100);

    array.Add(row);
}

{
    JObject row = new JObject();

    row.Add("Name", "Green Umbrella");
    row.Add("Price", 200);

    array.Add(row);
}

DataTable dt = JsonConvert.DeserializeObject<DataTable>(array.ToString());

“容器”必须是 JArray

下次您遇到类似问题时,正如@Dr 所建议的那样。 Wily 的,简单地尝试序列化一些东西:

var dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Price");

var row = dt.NewRow();
row["Name"] = "Blue Umbrella";
row["Price"] = 100;
dt.Rows.Add(row);

row = dt.NewRow();
row["Name"] = "Green Umbrella";
row["Price"] = 200;
dt.Rows.Add(row);

string serialized = JsonConvert.SerializeObject(dt);

并查看其格式:

[{"Name":"Blue Umbrella","Price":"100"},{"Name":"Green Umbrella","Price":"200"}]

关于c# - 将 Json 对象转换为 DataTable,我们在Stack Overflow上找到一个类似的问题: c# - Converting Json object to DataTable - Stack Overflow

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值