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é?
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
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);
}
});
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})
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.
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.