2012-09-20 12 views
14

Ho appena installato ASP MVC 4 e le mie date JSON tornano ancora nel vecchio formato {"timestamp":"\/Date(1348070400000)\/"}.ASP MVC 4 JsonResult come utilizzare le date ISO 8601?

Sono stato under the impression che avrebbero dovuto tornare nel formato 2012-02-18T00:54:06.8447642Z senza che io facessi nulla.

Nota: JSON.NET è ormai parte integrante di ASP.NET Web API in modo da poter appena ci fuori dalla scatola.

mio regolatore di simile a questa

public JsonResult Test() 
{ 
    return Json(new {timestamp = DateTime.Now()}, JsonRequestBehavior.AllowGet); 
} 

Come posso ottenere questo lavoro? Devo apportare modifiche al mio Global.asax.cs o Web.config?

risposta

21

ho avuto l'impressione che essi dovrebbero essere ritornando nel formato 2012-02-18T00 : 54: 06.8447642Z senza di me fare nulla.

Questo è vero solo per API Web ASP.NET (ApiControllers). Tuttavia, le azioni standard del controller ASP.NET MVC che restituiscono JsonResults utilizzano ancora lo JavaScriptSerializer. Pertanto, se si desidera utilizzare le date ISO 8601, è possibile scambiare questo serializzatore con JSON.NET scrivendo un custom action result. Basta aggiungere il convertitore appropriato per le impostazioni utilizzate dal serializzatore:

SerializerSettings.Converters.Add(new IsoDateTimeConverter()); 

Si potrebbe chiedere perché non hanno implementano JSON.NET per i controller standard. Immagino che sia per ragioni di compatibilità in quanto sarebbe un importante cambiamento di rottura. Ma probabilmente avrei reso JSON.NET il serializzatore predefinito con un'opzione di fallback per quelli che aggiornavano le loro applicazioni esistenti.

+0

Ciao, Ho un ActionResult che restituisce un PartialView con un modello e voglio che il modello sia serializzato usando la classe JsonNetResult ... qualche indizio? Grazie mille – VAAA

+0

Se si desidera restituire JSON, anziché restituire un oggetto PartialView dall'azione, è necessario restituire un ActionResult personalizzato che utilizza JSON.NET come serializzatore, ad esempio JsonNetResult. –

Problemi correlati