使用MVC时,返回adhoc Json非常简单。使用Web API返回匿名类型
return Json(new { Message = "Hello"});
我正在使用新的Web API查找此功能。
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
由于DataContractJsonSerializer
无法处理匿名类型,所以会引发异常。
我用JsonNetFormatter替换了这个JsonNetFormatter根据Json.Net。 这工作,如果我使用
public object Test()
{
return new { Message = "Hello" };
}
,但我没有看到使用Web API,如果我不返回HttpResponseMessage
点,我会过得更好香草MVC坚持。如果我尝试和使用:
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
它序列化整个HttpResponseMessage
。
任何人都可以指导我解决方案,我可以在HttpResponseMessage
内返回匿名类型吗?
这似乎并不是在当前版本中的情况。执行类似上述操作时,我收到一个HTTP 500。 – CodeMonkeyKing 2012-09-26 23:14:17
在4.0 RTM中适合我。 – Snixtor 2012-11-09 06:45:23
一个重要的注意事项,只有默认的json序列化器可以处理匿名对象的序列化。默认的xml序列化程序将会出错,因此请确保您返回客户端知道要发送的匿名对象接受:application/json in header。浏览器的Chrome浏览器倾向于默认要求xml,所以只是一个抬头.. – Despertar 2013-02-15 02:21:48