gpt4 book ai didi

c# - 从 SQL Server 数据库解析为 JSON 字符串的 .net DateTime 对象的序列化

转载 作者:行者123 更新时间:2023-11-30 20:02:20 25 4
gpt4 key购买 nike

我认为我的 .NET 4.5 DateTime 对象在我的 ASP.NET MCV 4 网络应用程序中被其 ApiController 错误地序列化。从 SQL Server 数据库检索 DataRow 对象后,我将其分配给 CarrierObject 中的 DateTime 成员对象。

StartTime = (DateTime)row["start_time"]

在此之后,我将 CarrierObject 添加到列表中,并在处理完所有相关条目后返回列表。 ApiController 将列表转换为 JSON 字符串以进行传输。

当我在客户端执行 API 调用并读取 JSON 输出时,我得到的输出格式为 2013-06-03T22:49:21.66虽然乍一看这看起来不错,但尝试在客户端解析它

var client = new HttpClient();
var uri = new Uri("http://555.55.55.55/test4/api/values");
Stream respStream = await client.GetStreamAsync(uri);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<CarrierObject>));
List<CarrierObject> feeds = (List<CarrierObject>)ser.ReadObject(respStream);

异常失败

System.Runtime.Serialization.SerializationException was unhandled by user code
HResult=-2146233076
Message=There was an error deserializing the object of type System.Collections.Generic.List ... PublicKeyToken=null]]. DateTime content '2013-06-03T22:49:21' does not start with '\/Date(' and end with ')\/' as required for JSON.

它似乎想要一些格式为/Date(1224043200000)/的东西。虽然我可以手动编写一个转换器来生成正确的 JSON 格式,但这似乎违背了 API Controller 执行的自动序列化和 DataContractJsonSerializer 执行的自动反序列化的目的。有没有办法让 DataContractJsonSerializer 接受 API Controller 或相反生成的格式?我应该使用其他解析器吗?

谢谢你的时间,

-- 科技火箭9

最佳答案

日期序列化一直是DataContractJsonSerializer的难点。尝试 JSON.NET相反。

This is one of the reasons WebAPI 决定默认使用 JSON.NET,而不是旧的 DataContractJsonSerializer

关于c# - 从 SQL Server 数据库解析为 JSON 字符串的 .net DateTime 对象的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16907878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com