JSON, remplacer les guillemets et les barres obliques, mais par quoi?
J'ai l'ingrate tâche de construire une Chaîne JSON en Java, manuellement, sans cadre, juste un StringBuilder. Je sais que c'est mauvais, mais ce n'est qu'une partie d'un prototype, je vais faire mieux la prochaine fois.
Ma question: Comment puis-je mettre de la Chaîne -> "Some text WITH quotes"
<- dans un objet JSON?
Bien sûr, {"key" : " "Some text WITH quotes" "}
est pas json valide en raison de la non échappés des citations.
Je pense que je dois utiliser des chaînes de caractères.remplacer ici, mais par quoi puis-je remplacer les guillemets? Même question pour la barre oblique "/". Quel est le bon remplacement?
Merci
OriginalL'auteur ceran | 2012-02-20
Vous devez vous connecter pour publier un commentaire.
se traduit par:
Vous pouvez utiliser
StringEscapeUtils.escapeJavaScript()
dans apache commons Lang 2.6 ouStringEscapeUtils.escapeEcmaScript()
en 3.4 pour faire le dur travail de s'échapper pour vous.Je veux dire
StringEscapeUtils.escapeJavaScript()
dans Apache Commons Lang, le nom de la méthode des liens vers la JavaDoc.J'ai téléchargé Commons Lang v3 et la méthode n'est pas là. Mais StringEscapeUtils.escapeEcmaScript() fait la même chose
Oh, vous avez raison, je me suis lié à l'héritage version 2.6. Dans 3.1, il a été rebaptisé
escapeEcmaScript()
, mise à jour de ma réponse.Le lien est mort. Elle est ici: StringEscapeUtils.escapeEcmaScript()
OriginalL'auteur Tomasz Nurkiewicz
Si vous souhaitez inclure un littéral double guillemet dans une chaîne JSON, vous devez vous échapper en le faisant précéder d'une barre oblique inverse
\
. Si votre chaîne JSON devra ressembler à ceci:Voir json.org pour l'officiel de la syntaxe JSON.
La barre oblique
/
n'est pas un caractère spécial et n'a pas besoin d'être échappé. La barre oblique inverse\
doit être échappé avec lui-même:\\
.Méfiez-vous que dans le code source de Java le
\
est aussi le caractère d'échappement et"
doit également être échappé, ce qui signifie que si vous les utiliser comme des littéraux dans votre code source, vous devez vous échapper de nouveau.OriginalL'auteur Jesper
-> \"un texte AVEC des guillemets\"
échapper au échapper char et échapper à une double quote dans la chaîne de
OriginalL'auteur PeterMmm
Avec du Prototype de chaîne de caractères.evalJSON(), commons-lang StringEscapeUtils.escapeJavaScript méthode fonctionne très bien, mais avec du JQuery jQuery.parseJSON(chaîne), il ne fonctionne pas si la valeur de chaîne contient apostrophes qui se échappé par la méthode ci-dessus.
La chaîne JSON ne devrait pas échapper à la apostrophe (== apostrophe), à strictement parler.
Donc j'utilise la StringEscapeUtils.escapeJava(String) de la méthode qui fait la même chose que escapeJavaScript sauf pour l'unique caractère de devis.
Mais il s'échappe de l'unicode des caractères en hexadécimal, ce qui augmente la longueur du script obtenu si la chaîne contient le nombre de caractères unicode.
On devrait peut-être utiliser certaines JSON dédié bibliothèques telles que
net.sf.json.util.JSONUtils.citation(String)
OriginalL'auteur Masaru Tomimitsu