将
DataTable
转换为 Json
文件时,带有 DateTime
的字段正在转换为 *\/Date(1722796200000)\/*?有任何解决方案可以将该方法转换为真正的 datetime
或 json
datetime
格式 “2024-08-05T00:00:00”
数据表的结构
DataTable dt = new DataTable();
dt.TableName = "TestJson";
dt.Columns.Add("No", typeof(short));
dt.Columns.Add("CDate", typeof(DateTime));
Datatable Format
没有 | 日期 |
---|---|
1 | 2024年5月8日00:00:00 |
2 | 2024年6月8日00:00:00 |
Code to add Data to DataTable
dt.Rows.Add(1, Convert.ToDateTime(txtODate.Text));
转换过程
string JsonData= DataTableToJSONWithJavaScriptSerializer(Dt);
public string DataTableToJSONWithJavaScriptSerializer(DataTable table)
{
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in table.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in table.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
return serializer.Serialize(rows);
}
结果正在得到
[{"否":1,"CDate":"/日期(1722796200000)/"}]
根据
文档,这是
JavaScriptSerializer
的默认行为。
如果您希望日期以 ISO8601 格式序列化,您应该使用 Newtonsoft.Json 库。
using Newtonsoft.Json;
...
return JsonConvert.SerializeObject(rows);
或使用 System.Text.Json:
using System.Text.Json;
...
return JsonSerializer.Serialize(rows);