Comment échapper aux guillemets dans JSON

J’essaie de montrer des guillemets doubles mais cela montre l’un des antislashs:

"maingame": { "day1": { "text1": "Tag 1", "text2": "Heute startet unsere Rundreise \\\"Example text\\\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir. " } } 

Lors du rendu dans le HTML, il apparaît comme \"Example text\" . Quelle est la bonne façon?

Essaye ça:

 "maingame": { "day1": { "text1": "Tag 1", "text2": "Heute startet unsere Rundreise \" Example text\". Jeden Tag wird ein neues Reiseziel angesteuert bis wir. " } } 

(juste une barre oblique inverse ( \ ) devant les guillemets).

Il montre la barre oblique inverse parce que vous échappez également à la barre oblique inverse.

Outre les guillemets, vous devez également échapper les barres obliques inverses si vous souhaitez en inclure une dans votre chaîne entre guillemets JSON. Cependant, si vous avez l’intention d’utiliser une barre oblique inverse dans une séquence d’échappement, vous ne devriez évidemment pas y échapper.

Quand et où utiliser \\\" place. OK si vous êtes comme moi, vous vous sentirez aussi stupide que lorsque j’ai réalisé ce que je faisais après avoir trouvé ce fil.

Si vous créez un fichier / stream de texte .json et que vous importez les données à partir de là, la réponse de stream principal située juste avant les guillemets doubles: \" est celle que vous recherchez.

Cependant, si vous êtes comme moi et que vous essayez de faire en sorte que “Tryit Editor” de w3schools.com ait des guillemets doubles dans la sortie du JSON.parse (texte), alors celui que vous recherchez est le sortingple barre oblique double guillemets \\\" . C’est parce que vous construisez votre chaîne de texte dans un bloc HTML , et que la première double barre oblique inverse insère une seule barre oblique inverse dans la variable de chaîne. la chaîne de sorte que la chaîne de script résultante contienne le \" de la réponse standard et que l'parsingur syntaxique JSON parsing ceci uniquement comme des guillemets doubles.

  

+1: comme il s'agit d'une chaîne de texte JavaScript, une double barre oblique inverse double guillemets \\" fonctionnerait aussi, car le double guillemet n'a pas besoin d'être échappé dans une seule chaîne entre guillemets, par exemple '\"' .

Notez que cela se produit le plus souvent lorsque le contenu a été “codé en double”, ce qui signifie que l’algorithme de codage a été accidentellement appelé deux fois.

Le premier appel coderait la valeur “text2”:

FROM: Heute startet unsere Rundreise “Exemple de texte”. Jeden Tag wird ein neues Reiseziel angesteuert bis wir.

À: Heute startet unsere Rundreise \ “Exemple de texte \”. Jeden Tag wird ein neues Reiseziel angesteuert bis wir.

Un deuxième encodage le convertit alors à nouveau, échappant aux caractères déjà échappés:

FROM: Heute startet unsere Rundreise \ “Exemple de texte \”. Jeden Tag wird ein neues Reiseziel angesteuert bis wir.

TO: Heute startet unsere Rundreise \\\ “Exemple de texte \\\”. Jeden Tag wird ein neues Reiseziel angesteuert bis wir.

Donc, si vous êtes responsable de l’implémentation du serveur ici, vérifiez qu’il n’y a pas deux étapes essayant d’encoder le même contenu.

Pour échapper à des barres obliques inverses provoquant des problèmes pour les données JSON, j’utilise cette fonction.

 //escape backslash to avoid errors var escapeJSON = function(str) { return str.replace(/\\/g,'\\'); }; 

Si vous souhaitez échapper à la double guillemet dans JSON, utilisez \\ pour y échapper.

exemple si vous voulez créer json d’object javascript suivant

 {time: '7 "o" clock'} 

alors vous devez écrire de la manière suivante

 '{"time":"7 \\"o\\" clock"}' 

si on parsing en utilisant JSON.parse()

 JSON.parse('{"time":"7 \\"o\\" clock"}') 

le résultat sera

 {time: "7 "o" clock"}