我需要使用json.net在DataTable和json之间进行序列化\反序列化。
我发现json.net igrone是“TableName”Attribute.how我可以添加吗?
像这样的代码。DataTable table = new DataTable();
table.TableName = "TestTable";
table.Columns.Add("id", typeof(int));
table.Columns.Add("name", typeof(string));
var dr = table.NewRow();
dr["id"] = 1;
dr["name"] = "foo";
table.Rows.Add(dr);
var json = JsonConvert.SerializeObject(table);
var o = JsonConvert.DeserializeObject<DataTable>(json);
当Serialize时,得到了json [{“id”:1,“name”:“foo”}]。这个json没有TableName,并且反序列化它,表也没有TableName。
所以,我需要TableName,我怎么能拥有它?
答案 0 :(得分:2)
我为JSON.NET创建了一个自定义DataTable转换器。从这里抓取来源:https://github.com/chris-herring/DataTableConverter
像这样使用:
string json = JsonConvert.SerializeObject(table, new Serialization.DataTableConverter());
var o = JsonConvert.DeserializeObject<DataTable>(json, new Serialization.DataTableConverter());
以这种格式序列化/反序列化System.Data.DataTable:
{
"TableName": "TestTable",
"Columns": [
{
"AllowDBNull": false,
"AutoIncrement": true,
"AutoIncrementSeed": 2,
"AutoIncrementStep": 1,
"Caption": "PrimaryKey",
"ColumnName": "PrimaryKey",
"DataType": "Int32",
"DateTimeMode": "UnspecifiedLocal",
"DefaultValue": null,
"MaxLength": -1,
"Ordinal": 0,
"ReadOnly": false,
"Unique": true
}
],
"Rows": [
[
1
],
[
2
],
[
3
]
],
"PrimaryKey": ["PrimaryKey"]
}