我想序列化一个DataTable
对象,该对象没有行,但是它具有列。
现在,Newtonsoft JSON.NET将这样的DataTable序列化为完全空的表,没有列。
但是,我想要列的名称和类型!
如何配置JSON.NET以序列化具有列名和列类型的空DataTable?
我想序列化一个DataTable
对象,该对象没有行,但是它具有列。
现在,Newtonsoft JSON.NET将这样的DataTable序列化为完全空的表,没有列。
但是,我想要列的名称和类型!
如何配置JSON.NET以序列化具有列名和列类型的空DataTable?
假设您有一个数据表dt
,则可以使用Linq将列投影到匿名类型(包含ColumnName和Type)列表中:
var columns = dt.Columns
.Cast<DataColumn>()
.Select(c => new { Name = c.ColumnName,Type = c.DataType.ToString()});
然后使用Newtonsoft.Json
可以像这样序列化:
var json = JsonConvert.Serialize(columns);
或使用System.Text.Json
:
var json = JsonSerializer.Serialize(columns);
其中(如果您的表有3列-Id
,Name
,Date
)会产生类似以下内容的JSON:
[
{
"Name": "Id","Type": "System.Int32"
},{
"Name": "Name","Type": "System.String"
},{
"Name": "Date","Type": "System.DateTime"
}
]