web-dev-qa-db-fra.com

Comment puis-je imprimer en JSON en utilisant node.js?

Cela semble être un problème résolu, mais je suis incapable de trouver une solution à ce problème.

En gros, je lis un fichier JSON, modifie une clé et réécris le nouveau JSON dans le même fichier. Tout fonctionne, mais je perds le formatage JSON.So, au lieu de:

{
  name:'test',
  version:'1.0'
}

Je reçois

{name:'test',version:'1.1'}

Y at-il un moyen dans Node.js d’écrire dans un fichier JSON bien formaté?

388
Rajat

Le troisième paramètre de JSON.stringify définit l'insertion d'espaces pour une impression réussie. Ce peut être une chaîne ou un nombre (nombre d'espaces). Node peut écrire sur votre système de fichiers avec fs. Exemple:

var fs = require('fs');

fs.writeFile('test.json', JSON.stringify({ a:1, b:2, c:3 }, null, 4));
/* test.json:
{
     "a": 1,
     "b": 2,
     "c": 3,
}
*/

Voir les docs JSON.stringify () sur MDN , docs fs du nœud

733
Ricardo Tomasi

Je pense que cela pourrait être utile ... J'aime l'exemple de code :)

var fs = require('fs');

var myData = {
  name:'test',
  version:'1.0'
}

var outputFilename = '/tmp/my.json';

fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) {
    if(err) {
      console.log(err);
    } else {
      console.log("JSON saved to " + outputFilename);
    }
}); 
208
nym

Si vous voulez simplement imprimer un objet et ne pas l'exporter en tant que JSON valide, vous pouvez utiliser console.dir().

Il utilise la mise en évidence de la syntaxe, l'indentation intelligente, supprime les guillemets des clés et rend la sortie aussi jolie que possible.

const jsonString = `{"name":"John","color":"green",
                     "smoker":false,"id":7,"city":"Berlin"}`
const object = JSON.parse(jsonString)

console.dir(object, {depth: null, colors: true})

Screenshot of logged object

Sous le capot, c'est un raccourci pour console.log(util.inspect(…)). La seule différence est qu'elle contourne toute fonction personnalisée inspect() définie sur un objet.

69
adius

Si vous ne souhaitez pas stocker cela n'importe où, mais affichez simplement l'objet à des fins de débogage.

console.log(JSON.stringify(object, null, "  "));

Vous pouvez modifier le troisième paramètre pour ajuster l'indentation.

17
Sanket Berde

et ça?

console.table(object)

sample