2015-06-15 8 views
12

ho un oggetto:Sfuggire citazioni in Newtonsoft JSON

public class Test 
{ 
    public string Prop1 { get; set; } 
} 

mi piacerebbe serializzare a JSON in una vista, in modo a mio cshtml:

<script type="text/javascript"> 
    var myJson = JSON.parse('@Html.Raw(JsonConvert.Serialize(Model.MyTest))'); 
</script> 

Funziona, fino Prop1 contiene citazioni, perché viene reso come:

var myJson = JSON.parse('{"Prop1":"\"Quoted text\""}'); 

Purtroppo, una tale linea getta analizzare errore. So che dovrebbe essere:

var myJson = JSON.parse('{"Prop1":"\\"Quoted text\\""}'); 

Come posso configurare Newtonsoft serializzare in modo corretto?

risposta

8

Non si deve analizzare la stringa per la seconda volta, poiché già serializzato come JSON, è possibile utilizzarlo direttamente in Javascript (il JS in JSON). Uscita

var myJson = @Html.Raw(JsonConvert.Serialize(Model.MyTest)); 

Will:

var myJson = {"Prop1":"\"Quoted text\""}; 

E, because you always need a JSFiddle to prove it works.

+0

Nizza, funziona! L'unico inconveniente è che l'intellisense viene confuso e contrassegna la linea come non valida. –

+0

Vero. Questo è un bug noto. –