JavaScript: comment puis-je supprimer tous les espaces en blanc, à partir d'une chaîne JSON à l'exception de ceux dans les valeurs?
Le suivant json...
var body = "{ \"name\": \"test\", \"description\": \"test json\", \"website\": \"domain.com\" }"
... comment puis-je supprimer tous les espaces en blanc, à l'exception de ceux dans les valeurs?
J'ai essayé les regexp...
var body = "{ \"name\": \"test\", \"description\": \"test json\", \"website\": \"domain.com\" }".replace(/\r?\n|\r/g, "").replace(/\s+/g, "")
... mais il supprime également les espaces dans les valeurs (c'est à dire description
):
{"name":"test","description":"testjson","website":"domain.com"}
J'ai besoin d'obtenir
{"name":"test","description":"test json","website":"domain.com"}
Tx.
Je pense que vous êtes absent le point de JSON, parce que c'est pas le JSON, c'est un objet JavaScript. Vous souhaitez
Hmm, c'est que la norme/garantie comportement?
Dans l'exemple réel-je obtenir une chaîne JSON avec des espaces blancs... Permettez-moi de corriger l'exemple dans mon post.
Pour la nouvelle version de la question:
JSON.stringify(body)
JSON.stringify(body)
renvoie sans espaces. Avez-vous essayé de voir si il y a des espaces avant d'essayer de l'enlever de là?Hmm, c'est que la norme/garantie comportement?
Dans l'exemple réel-je obtenir une chaîne JSON avec des espaces blancs... Permettez-moi de corriger l'exemple dans mon post.
Pour la nouvelle version de la question:
parse
d'abord, puis stringify
OriginalL'auteur j3d | 2014-09-04
Vous devez vous connecter pour publier un commentaire.
Retourne:
Qui est exactement ce que vous voulez. Et oui,
JSON.stringify
avec 1 paramètre est garanti pour donner la plus courte possible, JSON, ce qui signifie pas obsolètes les espaces à l'extérieur des clés et des valeurs. C'est la valeur par défaut parce que JSON est, dans presque toutes les situations, destiné à être un très efficace de données récursive méthode de sérialisation - inutile d'espaces est pas utilisé par défaut.La syntaxe complète est en fait:
Le troisième paramètre, optionnel, par défaut à
false
- si défini sur une autre valeur qu'il produit "pretty print" avec les espaces superflus ou le plomb dans les chaînes:Comme note finale, vous ne devriez même pas voulez d'utiliser une regexp pour cela. Les expressions régulières sont pour donner du sens des motifs de caractères, pas pour le traitement des données structurées comme XML, HTML ou JSON. Dans ces cas, l'utilisation de XML, DOM ou JSON analyseur, respectivement, et de traiter les résultats.
Mise à jour de la réponse. Évidemment, l'utilisation
JSON.parse
première pour en faire un objet valide, puis re -stringify
.OriginalL'auteur Niels Keurentjes
Parser le JSON, puis stringify de nouveau. L'analyse il vous permet de convertir au format JSON à l'objet Javascript, et puis stringifying il sera de retour le plus court représentation JSON:
OriginalL'auteur Barmar