J'ai un gros vieil objet de configuration. Quelque chose comme:
var object = {
item1: 'value1',
item2: 1000,
item3: ['a', 'b', 'c'],
item4: [1, 2, 3],
item5: {
foo: 'bar'
}
};
... etc. Je veux le réécrire en JSON valide afin qu'il puisse voyager à travers les intertubes, mais je ne veux pas parcourir chaque ligne de mon fichier en ajoutant manuellement des guillemets doubles partout. Bien sûr, cela ne me dérange pas d'envelopper manuellement le tout entre crochets et de changer l'affectation initiale pour être la première propriété, mais au-delà de cela, j'espérais qu'il y aurait une ressource qui ferait le travail de grognement.
Quoi qu'il en soit, veuillez m'aider si vous connaissez une commande TextMate, une astuce regex, un convertisseur en ligne, un robot convivial ou tout autre élément qui rendra cela moins fastidieux.
Tapez ensuite console.log(JSON.stringify(object))
et le tour est joué!
{"item1":"value1","item2":1000,"item3":["a","b","c"],
"item4":[1,2,3],"item5":{"foo":"bar"}}
Pour plus de contrôle sur la mise en forme, j'ai une page Web en ligne gratuite:
qui vous permet de coller des valeurs JSON ou JS dans une seule case et de voir JSON en bas, avec de nombreux boutons et curseurs pour ajuster son apparence. Par exemple, la valeur JS ["foo","bar",{dogs:42,piggies:0,cats:7},{jimmy:[1,2,3,4,5],jammy:3.14159265358979,hot:"pajammy"}]
peut être formaté comme l'un des éléments suivants (et plus):
[
"foo", <- adjustable indentation
"bar",
{"dogs":42,"piggies":0,"cats":7}, <- small objects on one line!
{
"jimmy":[1,2,3,4,5], <- small arrays on one line!
"jammy":3.142, <- decimal precision!
"hot":"pajammy"
}
]
[
"foo",
"bar",
{ "cats":7, "dogs":42, "piggies":0 }, <- spaces inside braces!
{
"hot":"pajammy", <- sort object keys!
"jammy":3.14159265358979,
"jimmy":[ 1, 2, 3, 4, 5 ] <- spaces after commas!
}
]
[ "foo", <- 'short' format puts first value
"bar", <- on same line as opening bracket...
{ "dogs" : 42,
"piggies" : 0,
"cats" : 7 }, <- ...and close bracket with last value!
{ "jimmy" : [ 1, 2, 3, 4, 5 ],
"jammy" : 3.14159265358979, <- spaces around colons!
"hot" : "pajammy" } ] <- align object values!
Pourquoi ne voudriez-vous pas simplement ...
... envoyer le résultat de JSON.stringify (). Vous n'avez pas besoin de taper le JSON, vous devez le générer à l'exécution si je ne me trompe pas, alors ...
var mything = { .... } ;
var jsonRep = JSON.stringify(mything);
Voir aussi, Sérialisation d'un objet en JSON
Vous pouvez utiliser la console de Google Chrome (ou Firebug, probablement):
> object
Object
item1: "value1"
item2: 1000
item3: Array[3]
item4: Array[3]
item5: Object
__proto__: Object
> JSON.stringify(object);
"{"item1":"value1","item2":1000,"item3":["a","b","c"],"item4":[1,2,3],"item5":{"foo":"bar"}}"
Si vous voulez un peu de documentation supplémentaire, consultez sing native JSON on the MDC.
Un autre JS en JSON outil de conversion en ligne avec coloration syntaxique.
J'ai créé un outil pour cela: bit.ly/js2json . Il prend JavaScript et génère JSON.