Tec*_*et9 2 c# sql-server api datetime json
我相信我的.NET 4.5 DateTime对象被我的ASP.NET MCV 4 Web应用程序中的ApiController错误地序列化了.从SQL Server数据库中检索DataRow对象后,我将其分配给CarrierObject中的DateTime成员对象.
StartTime = (DateTime)row["start_time"]
Run Code Online (Sandbox Code Playgroud)
在此之后,我将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);
Run Code Online (Sandbox Code Playgroud)
它失败了,例外
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.
Run Code Online (Sandbox Code Playgroud)
它似乎想要格式/日期(1224043200000)/的东西.虽然我可以手动编写一个转换器来生成正确的JSON格式,这似乎违背了API控制器执行的自动序列化和DataContractJsonSerializer执行的自动反序列化的目的.有没有办法让DataContractJsonSerializer接受API控制器生成的格式或相反的格式?我应该使用不同的解析器吗?
感谢您的时间,
- Techrocket9