转换JSON对象到DataTable中

问题描述:

在这里也有几个帖子在其他论坛,我发现这段代码引用了转向JSON对象到一个DataTable:转换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))); 

我做了什么错?

+0

我会看看的字符串值是什么,是由'query.ToString(生产)和'将其与您见过的其他例子进行比较。 –

+0

为什么要将其转换为数据表?为什么不转换为[POCO](http://en.wikipedia.org/wiki/Plain_Old_CLR_Object)? – mason

使用类似:

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"}] 
+0

如何将此json字符串更改为Datatable C#{ “apple.com”:{“status”:“regthroughothers”,“classkey”:“domcno”}, “asdfgqwx.com”:{“status”:“available “,”classkey“:”domcno“}, ”microsoft.org“:{”status“:”unknown“}, ”apple.org“:{”status“:”unknown“}, ”microsoft.com “:{”status“:”regthroughothers“,”classkey“:”domcno“}, ”asdfgqwx.org“:{”status“:”unknown“} } – user3786581

+0

@ user3786581我不认为你可以:键名称canges,''apple.com''变成'“asdfgqwx.com”'变成'“microsoft.com”'这更像是一个'Dictionary '。这个问题很复杂,你应该提出一个完整的问题。 – xanatos

+0

好的。这里是我的完整问题[链接](http://*.com/questions/35482580/how-to-convert-json-string-into-datatable-in-asp-net-with-c-sharp) – user3786581