转换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)));
我做了什么错?
使用类似:
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"}]
如何将此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
@ user3786581我不认为你可以:键名称canges,''apple.com''变成'“asdfgqwx.com”'变成'“microsoft.com”'这更像是一个'Dictionary
好的。这里是我的完整问题[链接](http://*.com/questions/35482580/how-to-convert-json-string-into-datatable-in-asp-net-with-c-sharp) – user3786581
我会看看的字符串值是什么,是由'query.ToString(生产)和'将其与您见过的其他例子进行比较。 –
为什么要将其转换为数据表?为什么不转换为[POCO](http://en.wikipedia.org/wiki/Plain_Old_CLR_Object)? – mason