配列の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文で回していたので
[ { }, { }, … { }, ]
とかなって最後の','で読み込むのに失敗した…。例外処理しました…。絶対おかしい。もっときれいなやり方あるはず…。