当我将具有日期属性的 json 对象发布到 ApiController 时,它不会反序列化为日期。
服务器站点代码:
public class MegaTestController : ApiController
{
// POST /megatest
public void Post(ttt value)
{
string sdf = "!sad";
}
}
public class ttt
{
public DateTime Date { get; set; }
public string Name { get; set; }
}
然后我用提琴手做一个 POST 请求
POST http://localhost:62990/MegaTest HTTP/1.1
用户代理:提琴手
主机:本地主机:62990
内容类型:文本/json
内容长度:54
{ "日期":"/Date(1239018869048)/", "姓名":"老兄" }
但是进来的对象只有Name
属性集,Date
属性是 {01.01.0001 00:00:00}
我是否缺少任何标题或项目设置?
编辑:请求实际上来自HttpClient
. 是否可以在发送请求之前格式化日期HttpClient
?
public Task<T> Create<T>(T item)
{
var service = new HttpClient();
service.BaseAddress = new Uri("http://localhost:62990");
var method = typeof(T).Name + "s"; // in this case it will be ttts
var req = new HttpRequestMessage<T>(item);
req.Content.Headers.ContentType = new MediaTypeHeaderValue("text/json");
return service.PostAsync(method, req.Content).ContinueWith((reslutTask) =>
{
return reslutTask.Result.Content.ReadAsAsync<T>();
}).Unwrap();
}
var data = new ttt { Name = "Dude", Date = DateTime.Now };
Create(data);
编辑:这是 ASP MVC 4 Beta 的一个已知错误,ASP MVC 4 的最终版本将使用Json.net作为 json 序列化程序,直到那时您可以使用默认的 XML 序列化程序或为Json.net切换默认的 Json 序列化程序. 更多信息可以在hanselman 博客上找到