JSON.stringify sans les guillemets sur les propriétés?
Je suis en utilisant un service qui utilise le mauvais format JSON (pas de guillemets autour de propriétés). J'ai donc besoin d'envoyer
{ name: "John Smith" }
au lieu de { "name": "John Smith" }
Ce format ne peut pas être changé, car ce n'est pas mon service.
Quelqu'un connais un stringify de routage pour formater un objet JavaScript, comme ci-dessus?
Vous devez vous connecter pour publier un commentaire.
La regex va supprimer toutes les citations, et la chose la plus importante est, il n'a pas besoin d'une bibliothèque!
Cas extrême:
Spécial merci à Rob W pour le fixer.
Mise à jour:
Dans la plupart des cas susmentionnés regexp va fonctionner, mais mathématiquement, il est impossible de décrire le format JSON avec une expression régulière telle qu'elle fonctionne dans tous les cas (en comptant le même nombre d'accolades est impossible avec des regexp.) Donc, j'ai créer une nouvelle fonction pour supprimer des citations officiellement l'analyse de la chaîne JSON via la fonction native et reserialize c':
Exemple: https://jsfiddle.net/DerekL/mssybp3k/
Noter que le code est écrit dans l'ES6 et peut nécessiter transpilation ou de traduction du manuel pour les anciens navigateurs.
var x = eval(str);
{"foo":"e\":bar"}
(JSON valide) devient{foo:e:bar"}
(...)!no \" in between the quotes
à la regex/\\"/
. N'oubliez pas d'ajouter l'indicateur global,/\\"/g
, ou il va se casser sur les cordes avec plusieurs\"
. Comme pour le caractère aléatoire, jamais utiliser un littéral U+FFFF, dans le cas où l'éditeur étouffe, mais une séquence d'échappement. La regex pour revenir deviendrait/\uFFFF/g
./\"([^(\")"]+)\":/g
peut être simplifié à/"([^"]+)":/g
, voir regex101.com/r/qnz0ld/2Il ressemble à ceci est une simple méthode toString de l'Objet que vous recherchez.
Dans Node.js ce problème est résolu en utilisant le menu util objet et l'appel util.inspecter(yourObject). Cela vous donnera tout ce que vous voulez. suivez ce lien pour plus d'options, y compris la profondeur de l'application de la méthode. http://nodejs.org/api/util.html#util_util_inspect_object_options
Donc, ce que vous recherchez est à la base un inspecteur d'objet, pas un JSON convertisseur. Format JSON spécifie que toutes les propriétés doivent être entourés de guillemets doubles. Donc il n'y aura pas de JSON convertisseurs de faire ce que vous voulez tant que ce n'est tout simplement pas un format JSON.Les Specs ici:
https://developer.mozilla.org/en-US/docs/Using_native_JSON
Objet string ou inspection est ce que vous avez besoin en fonction de la langue de votre serveur.
.toSource()
fonctionne bien au sein de nodejs, mais ne fonctionne pas d'objets dans des tableaux. Leutil
inspecter les travaux pour les tableaux et les objets dans les tableaux de ce qui est merveilleux, l'amour.util.inspect()
fonctionne simplement génial pour moi lors de l'écriture d'un objet dans un Neo4j requête, pour définir plusieurs paramètres à la fois.Vous pouvez regarder le code source de
json2.js
un analyseur créé par celui qui a défini le format JSON. Recherchezquote
appels de fonction: ces entourent une valeur entre guillemets. Les touches sont indiqués aux lignes Trois cent vingt six et Trois cent trente huit.Ne pas inclure la bibliothèque après la modification. Au lieu de prendre uniquement les (
stringify
) une partie, ou au moins de remplacerJSON
avec autre chose, par exemple.FAKEJSON
.Par exemple, un objet
FAKEJSON
qui définistringify
: http://jsfiddle.net/PYudw/JSON.stringify
partie, et de supprimer les guillemets. Puisque la bibliothèque est créé par celui qui l'a défini JSON, nous pouvons être à peu près sûr que le résultat est très JSON valide..toSource()
fonctionne bien, mais n'inclut pas si votre objet est dans la gamme qui est une déception (et je suis sur le nœud de sorte navigateur compat n'est pas un problème :P) donc je vais utiliser cette méthode merci @RobW aussi, le jsfiddle lien semble être bloqué au chargement de la page 🙁Trouvé un bon MNP paackage pour faire juste cela:
https://www.npmjs.com/package/stringify-object
Fonctionne assez bien.
Essayez d'utiliser le service avec JSONP, je suppose qu'ils offrent lors de l'utilisation de ce format.
D'autre, fichier détail un rapport de bug, y compris une bonne argumentation pourquoi le devrait se conformer à la norme. Toute autre solution que d'éliminer la source du problème n'est pas de réelle solution.
Un quick-n-sale correctif pourrait être le tuyau de la chaîne à travers une regex avant de l'analyser:
Ou vous essayez de régler un code javascript JSON parser (comme cette une) si vous voulez plus de syntaxe analyser.
Votre hérité de la syntaxe devrait être facilement consommés par les YAML, qui est un sur-ensemble de JSON.
Essayer le JavaScript YAML et l'analyseur de dumper: http://nodeca.github.com/js-yaml/
CSVJSON de formatage automatique de la requête JSON a une option pour déplacer les citations sur les touches. Si vous voulez juste le code, vous pouvez le copier depuis le dépôt GitHub. Je modifié Douglas Crockford de JSON2 pour ajouter le support pour que.
hacked by AnoaGhost
@Derek朕會功夫 Merci pour le partage de cette méthode, je souhaitez partager mon code qui prend en charge stringifying un tableau d'objets.
JSON.stringify
pour instanceof Date trop. Également de retour'null'
siobj_from_json
est null.