我在c#中有一个包含以下内容的数据表:
firstName lastName email password
Alpha Tango AlphaTango@domain.com 123
Charle Tango CharlieTango@domain.com 456
我需要使用以下格式将此数据表转换为json。
{
"columns": [
"firstName",
"lastName",
"email",
"password",
],
"rows": [
[
"Alpha",
"Tango",
"AlphaTango@domain.com",
"123"
],
[
"Charle",
"Tango",
"CharlieTango@domain.com",
"456"
]
]
}
我可以通过JsonConvert.SerializeObject(dt1.AsEnumerable().Select(r => r.ItemArray))
将行转换为数组的json数组
但我无法得到整个json(有行和列)。任何指针都将受到高度赞赏。
答案 0 :(得分:3)
这样的事情应该有效:
JsonConvert.SerializeObject(new {
columns = dt1.Columns.Cast<DataColumn>().Select(x => x.ColumnName),
rows = dt1.AsEnumerable().Select(r => r.ItemArray),
});
我做了一个简单的小提琴:https://dotnetfiddle.net/T5Gs8l
结果似乎正是您所期望的:
{
"columns": [
"firstName",
"lastName",
"email",
"password"
],
"rows": [
[
"Alpha",
"Tango",
"AlphaTango@domain.com",
"123"
],
[
"Charlie",
"Tango",
"CharlieTango@domain.com",
"456"
]
]
}
请注意,您丢失了类型信息,因此如果您的列可能具有不同的数据类型,则将对象反序列化回相同的数据表可能会很棘手(您可能需要从值中推断列类型)。
如果要对其进行反序列化,我可能会在列上存储更多信息。