2015-06-15 20 views
12

Ich habe ein Objekt:Escaping zitiert in Newtonsoft JSON

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

Ich möchte es in Hinblick auf Json serialisiert, so in meinem cshtml:

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

Es funktioniert, bis Prop1 enthält Zitate, weil es so gemacht wird: Leider

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

, eine solche Linie Fehler wirft analysieren. Ich weiß, dass es sein sollte:

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

Wie kann ich Newtonsoft serialisiert es in der richtigen Weise zu konfigurieren?

Antwort

8

Sie sollten die Zeichenfolge nicht ein zweites Mal analysieren, da sie bereits als JSON serialisiert wurde, können Sie sie direkt in Javascript (JS in JSON) verwenden.

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

Will Ausgang:

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

Und because you always need a JSFiddle to prove it works.

+0

Nizza, funktioniert! Der einzige Nachteil ist, dass Intellisense verwirrt wird und die Zeile als ungültig markiert. –

+0

Wahr. Das ist ein bekannter Fehler. –

Verwandte Themen