Podczas korzystania z MVC, zwrot adhoc Json był łatwy.Powracanie anonimowych typów za pomocą interfejsu Web API
return Json(new { Message = "Hello"});
Poszukuję tej funkcjonalności za pomocą nowego interfejsu API.
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
ta zgłasza wyjątek jako DataContractJsonSerializer
nie może obsługiwać anonimowych typów.
Zastąpiłem to tym JsonNetFormatter na podstawie Json.Net. To działa, jeśli mogę użyć
public object Test()
{
return new { Message = "Hello" };
}
ale nie widzę sensu korzystania z sieci Web API, jeśli nie będę powrocie HttpResponseMessage
, byłbym lepiej trzymać z wanilii MVC. Jeśli spróbuję użyć:
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
Serializuje całość HttpResponseMessage
.
Czy każdy może prowadzić mnie do rozwiązania, w którym mogę zwrócić anonimowe typy w ramach HttpResponseMessage
?
Nie wydaje się, że tak jest w obecnej wersji. Otrzymuję HTTP 500 podczas wykonywania czegoś podobnego. – CodeMonkeyKing
Działa dobrze dla mnie w 4.0 RTM. – Snixtor
Ważna uwaga, tylko domyślny seriser json może obsługiwać szeregowanie anonimowych obiektów. Domyślny serialalizator XML będzie się nie wyświetlał, więc upewnij się, że zwrócisz anonimowe obiekty, które Twoi klienci wiedzą, aby wysłać, zaakceptuj: application/json w nagłówku. Podobnie jak w przeglądarce Chrome zwykle domyślnie żądam xml, więc to tylko heads up. – Despertar