Arn*_*sss 5 c# datatable serialization json json.net
我认为以下将是一个非常常见的任务,并假设有一个简单的解决方案,但我找不到一个.
如果我有以下结构的数据表.
ID Name Active
ID1 John TRUE
ID2 Bill FALSE
Run Code Online (Sandbox Code Playgroud)
我想将其序列化为JSON对象,其中ID列是JSON对象中的节点,如:
[
{
"ID1": {
"Name": "John",
"Active": "True"
},
"ID2": {
"Name": "Bill",
"Active": "False"
}
}
]
Run Code Online (Sandbox Code Playgroud)
我查看了JSON.NET但无法让它工作.编辑:我正在使用C#
yam*_*men 21
使用JSON.NET非常简单.只需将您的数据表转换为等效的词典字典:
public Dictionary<string, Dictionary<string, object>> DatatableToDictionary(DataTable dt, string id)
{
var cols = dt.Columns.Cast<DataColumn>().Where(c => c.ColumnName != id);
return dt.Rows.Cast<DataRow>()
.ToDictionary(r => r[id].ToString(),
r => cols.ToDictionary(c => c.ColumnName, c => r[c.ColumnName]));
}
Run Code Online (Sandbox Code Playgroud)
然后打电话:
JsonConvert.SerializeObject(DatatableToDictionary(dt, "ID"), Newtonsoft.Json.Formatting.Indented);
Run Code Online (Sandbox Code Playgroud)
这是完整的测试:
var dt = new DataTable("MyTable");
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Active");
dt.LoadDataRow(new[] {"ID1", "John", "True"}, true);
dt.LoadDataRow(new[] {"ID2", "Bill", "False"}, true);
JsonConvert.SerializeObject(DatatableToDictionary(dt, "ID"));
Run Code Online (Sandbox Code Playgroud)
结果如下:
{
"ID1": {
"Name": "John",
"Active": "True"
},
"ID2": {
"Name": "Bill",
"Active": "False"
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18749 次 |
最近记录: |