Returning anonymous types with Web API
asp.net-web-api, c#, json, json.net
Solution
This doesn't work in the Beta release, but it does in the latest bits (built from http://aspnetwebstack.codeplex.com), so it will likely be the way for RC. You can do
public HttpResponseMessage Get()
{
return this.Request.CreateResponse(
HttpStatusCode.OK,
new { Message = "Hello", Value = 123 });
}
Problem
When using MVC, returning adhoc Json was easy. ``` return Json(new { Message = "Hello"}); ``` I'm looking for this functionality with the new Web API. ``` public HttpResponseMessage<object> Test() { return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK); } ``` This throws an exception as the `DataContractJsonSerializer` can't handle anonymous types. I have replaced this with this JsonNetFormatter based on Json.Net. This works if I use ``` public object Test() { return new { Message = "Hello" }; } ``` but I don't see the point of using Web API if I'm not returning `HttpResponseMessage`, I would be better off sticking with vanilla MVC. If I try and use: ``` public HttpResponseMessage<object> Test() { return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK); } ``` It serializes the whole `HttpResponseMessage`. Can anyone guide me to a solution where I can return anonymous types within a `HttpResponseMessage`?