将 DataTable 转换为 Json 时,日期时间以“\/Date(1722796200000)\/\”格式获取

问题描述 投票:0回答:1

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)/"}]

c# json datatable
1个回答
0
投票

根据

文档
,这是 JavaScriptSerializer 的默认行为。

如果您希望日期以 ISO8601 格式序列化,您应该使用 Newtonsoft.Json 库。

using Newtonsoft.Json;

...

return JsonConvert.SerializeObject(rows);

或使用 System.Text.Json:

using System.Text.Json;

...

return JsonSerializer.Serialize(rows);
© www.soinside.com 2019 - 2024. All rights reserved.