ツタンラーメンの忘備録

プログラミングや精神疾患、ラーメンについて書いていきます。たぶん。

配列のjsonファイルの生成方法

これ全然需要なさそうなんだけど苦労したので書いておきます。

出力したい形は

[
    {
        a: 'a',
        b: 'b',
    },
    {
        a: 'a',
        b: 'b',
    },
    {
        a: 'a',
        b: 'b',
    }
]

で入力が

data = {
  a:'a',
  b:'b',
};
data2 = {
  a:'a',
  b:'b',
};
data3 = {
  a:'a',
  b:'b',
};

こんな感じ。

jsonを出力したいときはご存知のように

fs.appendFileSync("output.json", JSON.stringify(data, '', ' '), 'utf8');

ってやるんだけどそのままやると配列にならない(当たり前)
で最終的にどうやったかというと

fs.appendFileSync("output.json", '[  ', 'utf8'); //'[  '←はTab
fs.appendFileSync("output.json", JSON.stringify(data1, '', ' '), 'utf8');
fs.appendFileSync("output.json", ',', 'utf8');
fs.appendFileSync("output.json", JSON.stringify(data2, '', ' '), 'utf8');
fs.appendFileSync("output.json", ',', 'utf8');
fs.appendFileSync("output.json", JSON.stringify(data3, '', ' '), 'utf8');
fs.appendFileSync("output.json", '  ]', 'utf8');

いやいや、きたないよね。もっときれいなやり方あるよね!!!!と思ったけど時間がないので強引に。
ちなみに私はfor文で回していたので

[  {
},
{
},
…
{
},  ]

とかなって最後の','で読み込むのに失敗した…。例外処理しました…。絶対おかしい。もっときれいなやり方あるはず…。