2012-09-11 9 views
11

Ci sono molte risorse su come sostituire la libreria Json.NET come default serializer in applicazioni ASP.NET MVC, ma, per la vita di me, non riesco a trovare una singola risorsa su come impostarla come il deserializzatore predefinito.Come utilizzare Json.NET come deserializzatore predefinito in un'applicazione ASP.NET MVC 3+?

per illustrare che un po ', ecco qualche codice del modello:

       // how to use Json.NET when deserializing 
           // incoming arguments? 
            V 
public ActionResult SomeAction (Foo foo) { 

    // this piece of code has lots of resources 
    // on how to override the default Javascript serializer 
    return Json(new Bar()); 

} 

Come faccio a dire la mia applicazione per utilizzare Json.NET quando la deserializzazione parametri in entrata in azioni di controllo, per esempio, da un jQuery AJAX chiamare?

$.ajax({ 
    type : 'POST', 
    data : { foo : 'bar' } 
}); 

ho provato adattare MediaTypeFormatters nel mio codice regolando this resource from Rick Strahl, ma che non ha funzionato neanche. Si noti che non sono in un ambiente WebAPI, ma mi aspetto che una soluzione funzionante su un normale Controller funzioni (anche se con regolazioni minime) in un ApiController.

+0

Hai risolto questo problema in qualche modo? – Jaap

+0

@Jaap Ricordo che dovevo lasciarlo prima, ma ho provato il suggerimento di Fatal qui sotto e questo ha funzionato in larga misura. –

risposta

2

È necessario implementare un valore personalizzatoProviderFactory e rimuovere lo standard JsonValueProviderFactory.

C'è un codice di esempio qui: http://json.codeplex.com/discussions/347099 tuttavia leggendo i commenti, non sono sicuro al 100% che gestirà correttamente i dizionari.

+0

Questo articolo non fornisce un modo per personalizzare la conversione Json utilizzando gli attributi JsonConverter. – Jaap

Problemi correlati