589 Stimmen

Wie kann ich pretty-print JSON mit node.js?

Dieses Problem scheint gelöst zu sein, aber ich kann keine Lösung dafür finden.

Im Grunde lese ich eine JSON-Datei, ändere einen Schlüssel und schreibe das neue JSON in dieselbe Datei zurück. Alles funktioniert, aber ich verliere die JSON-Formatierung, also statt:

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

Ich bekomme

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

Gibt es eine Möglichkeit, in Node.js zu schreiben gut formatierte JSON in eine Datei?

0 Stimmen

JSON.stringify zyklische Objekte verschluckt, und util.inspect erzeugt kein gültiges JSON :\ Ich habe keine [native] Lösung gefunden, um JSON in NodeJS schön zu drucken

1 Stimmen

@ThorSummoner: Das ist ein Problem mit JSON, nicht mit Node - JSON unterstützt von Haus aus keine zyklischen Referenzen. Es gibt eine Lösung hier, in einer anderen Frage .

1119voto

Ricardo Tomasi Punkte 33062

JSON.stringify Der dritte Parameter definiert die Einfügung von Leerzeichen für das Pretty-Printing. Er kann eine Zeichenkette oder eine Zahl (Anzahl der Leerzeichen) sein. Node kann in Ihr Dateisystem schreiben mit fs . Beispiel:

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,
}
*/

Siehe die JSON.stringify()-Dokumente bei MDN , Knoten fs docs

243voto

nym Punkte 430

Ich glaube, das könnte nützlich sein... Ich liebe Beispielcode :)

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);
    }
});

125voto

adius Punkte 11710

Wenn Sie ein Objekt nur hübsch ausdrucken und nicht als gültiges JSON exportieren möchten, können Sie console.dir() .

Es verwendet Syntax-Highlighting, intelligente Einrückung, entfernt Anführungszeichen von Schlüsseln und macht die Ausgabe einfach so hübsch wie möglich.

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

Unter der Haube ist es eine Abkürzung für console.log(util.inspect(…)) . Der einzige Unterschied besteht darin, dass es alle benutzerdefinierten Optionen umgeht. inspect() Funktion, die für ein Objekt definiert wurde.

58voto

Sanket Berde Punkte 6091

Wenn Sie dies nirgendwo speichern wollen, sondern das Objekt nur zu Debugging-Zwecken ansehen wollen.

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

Sie können den dritten Parameter ändern, um die Einrückung anzupassen.

40voto

illvart Punkte 607

Ich weiß, diese Frage ist alt. Aber vielleicht kann dies Ihnen helfen

JSON-Zeichenfolge

var jsonStr = '{ "bool": true, "number": 123, "string": "foo bar" }';

Pretty Print JSON

JSON.stringify(JSON.parse(jsonStr), null, 2);

JSON verkleinern

JSON.stringify(JSON.parse(jsonStr));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X