2010-06-28 9 views
6

Je souhaite nettoyer les chaînes extraites d'une base de données.Les chaînes de nettoyage doivent être des valeurs JSON valides

J'ai rencontré ce problème où une valeur de propriété (un nom d'une base de données) avait un caractère TAB incorporé et Chrome m'a donné une erreur TOKEN non valide lors du chargement de l'objet JSON.

Alors maintenant, je suis allé à http://www.json.org/ et sur le côté il a une spécification. Mais je vais avoir du mal à comprendre comment écrire un nettoyant en utilisant cette spécification:

chaîne

  • ""
  • "" caractères

caractères

  • ombles
  • omblecaractères

ombles

  • tout-Unicode caractéris- sauf - "- ou - ou- contrôle caractère
  • \ "
  • \\
  • /
  • \ b
  • \ f
  • \ n
  • \ r
  • \ t
  • \ u quatre-hex-chiffres

Étant donné une chaîne, comment puis-je "nettoyer" de telle sorte que je me conforme à cette spécification?

Plus précisément, je suis confus: la spécification autorise-t-elle les caractères TAB (0x0900)? Si oui, pourquoi Chrome a-t-il donné une erreur TOKEN non valide?

Répondre

13

caractères Tab (0x09 réelle, n'échappe) ne peut pas apparaître à l'intérieur des citations dans JSON (si elles sont des espaces valables en dehors des guillemets). Vous aurez besoin de leur échapper avec \t ou \u0009 (le premier étant préférable).

json.org dit un caractère non échappés d'une chaîne doit être:.

Tout caractère UNICODE sauf "ou \ ou caractère de contrôle

compte Tab comme un caractère de contrôle

Questions connexes