Quando si utilizza MVC, restituire adhoc Json è stato facile.Restituzione di tipi anonimi con Web API
return Json(new { Message = "Hello"});
Sto cercando questa funzionalità con la nuova API Web.
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
Questo genera un'eccezione come il DataContractJsonSerializer
non può gestire tipi anonimi.
Ho sostituito questo con questo JsonNetFormatter basato su Json.Net. questo funziona se uso
public object Test()
{
return new { Message = "Hello" };
}
ma non vedo il punto di usare API Web se non sto tornando HttpResponseMessage
, sarei meglio attaccare con vaniglia MVC. Se provo e uso:
public HttpResponseMessage<object> Test()
{
return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK);
}
E serializza l'intero HttpResponseMessage
.
Qualcuno può guidarmi a una soluzione in cui posso restituire tipi anonimi all'interno di un HttpResponseMessage
?
Questo non sembra essere il caso nella versione corrente. Ricevo un HTTP 500 quando eseguo qualcosa come sopra. – CodeMonkeyKing
Funzionante per me in 4.0 RTM. – Snixtor
Una nota importante, solo il serializzatore json predefinito può gestire la serializzazione di oggetti anonimi. Il serializzatore xml predefinito genererà un errore, quindi assicurati di restituire oggetti anonimi che i tuoi clienti sanno per inviare accettare: application/json in header. Anche i browser come Chrome tendono a richiedere xml per impostazione predefinita, quindi basta un avviso. – Despertar