我相信我的 .NET 4.5 DateTime 对象在我的 ASP.NET MCV 4 Web 应用程序中被其 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 控制器执行的自动序列化和 DataContractJsonSerializer 执行的自动反序列化的目的。有没有办法让 DataContractJsonSerializer 接受 API 控制器或相反生成的格式?我应该使用不同的解析器吗?
感谢您的时间,
-- 技术火箭9