web-dev-qa-db-fra.com

Existe-t-il un moyen rapide de convertir un objet JavaScript en JSON valide dans l'éditeur de texte?

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.

36
No Surprises
  1. Lancez Firefox/Chrome/Safari
  2. Outils Firebug/développeur ouverts
  3. Copiez/collez votre code dans la console.
  4. 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"}}
    
  5. Copiez/collez dans votre éditeur de texte.

Pour plus de contrôle sur la mise en forme, j'ai une page Web en ligne gratuite:

http://phrogz.net/JS/NeatJSON

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!

Screenshot of NeatJSON webpage

122
Phrogz

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

6
Cheeso

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.

3
Felix

Un autre JS en JSON outil de conversion en ligne avec coloration syntaxique. Javascript to JSON converter

3
faboulaws

J'ai créé un outil pour cela: bit.ly/js2json . Il prend JavaScript et génère JSON.

0
dominik