web-dev-qa-db-ja.com

node.jsを使用してJSONをきれいに印刷する方法を教えてください。

これは解決された問題のようですが、私はそれに対する解決策を見つけることができません。

基本的に、私はJSONファイルを読み、キーを変更し、そして新しいJSONを同じファイルに書き戻します。すべてうまくいきますが、私はJSONフォーマットを失います。

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

私は

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

Node.jsでファイルに整形式のJSONを書く方法はありますか?

374
Rajat

JSON.stringifyの3番目のパラメータは見栄えのよい印刷のための空白の挿入を定義します。文字列または数値(スペース数)でもかまいません。ノードはfsであなたのファイルシステムに書くことができます。例:

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

MDNの JSON.stringify()ドキュメントノードfsドキュメント を参照してください。

713
Ricardo Tomasi

私はこれが役に立つかもしれないと思います...私は例のコードが大好きです:)

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

単にオブジェクトをきれいに印刷してそれを有効なJSONとしてエクスポートしたくない場合はconsole.dir()を使うことができます。

構文の強調表示、スマートなインデントを使用し、キーから引用符を削除し、出力を可能な限りきれいにします。

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

フードの下でそれはconsole.log(util.inspect(…))の近道です。唯一の違いは、オブジェクトに定義されているカスタムinspect()関数をバイパスすることです。

65
adius

これをどこにも保存したくない場合は、デバッグ目的でオブジェクトを表示するだけです。

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

3番目のパラメータを変更してインデントを調整できます。

13
Sanket Berde

これはどうですか?

console.table(object)

sample