J'ai une application ASP.NET MVC renvoyant une chaîne JSON à la vue.
// Parsing the model returned on the VIEW
var jsonString = "@Html.Raw(Model.ToJson())";
var jsonObj = JSON.parse(jsonString);
Le problème est que je ne suis pas capable d’analyser car le jsonString contient des caractères tels que "" et "".
//Sample string
{ "description" : "<p>Sample<span style="color: #ff6600;"> Text</span></strong></p>" }
Réponses:
5 pour la réponse № 1JSON est valide JavaScript, donc vous pouvez simplement faire ceci:
var jsonObj = @Html.Raw(Model.ToJson());
Pour info, si l’analyse JSON échoue, c’est parce que le bien "
sont échappés avec pour que le code JSON soit valide, les barres obliques inverses elles-mêmes doivent être insérées dans la chaîne pour pouvoir être vues par l'analyseur JSON. Comparer:
JSON.parse(""quote: """); // error: unexpected string
JSON.parse(""quote: \"""); // "quote: ""
Cet exemple devrait également préciser ce qui se passe dans les barres obliques inverses:
var unescaped = """, escaped = "\"";
console.log(unescaped, unescaped.length); // """, 1
console.log(escaped, escaped.length); // """, 2
0 pour la réponse № 2
Si vous souhaitez créer une chaîne Javascript valide, vous devez échapper les barres obliques inverses et les apostrophes:
var jsonString = "@Html.Raw(Model.ToJson().Replace("\", "\\").Replace(""", "\""))";