JSON をいい感じに CSV 形式に変換してくれる npm json2csv が便利だったのでご紹介します。
まず、前提として適当な独自 CSV で出力しないことです。
詳しくは、それでも独自のCSVを書くつもりですか? | POSTD に書いてあります。
console.log([ 'a', 'b', 'c' ].join(','));
みたいなカンマ区切りで CSV 出力しようと考えている方はかならず POSTD の記事を読みましょう。
個人的によく使うパターンで json2csv のサンプルコードを書いてみたのが以下です。
const Json2csvParser = require('json2csv').Parser;
const fields = ['jan', 'price', 'description'];
const products = [
{
"jan": "001",
"name": "spam",
"price": 1000,
"description": "spam, spam"
},
{
"jan": "102",
"name": "hoge",
"price": 2000,
"description": "hoge\\" hoge"
},
{
"jan": "203",
"name": "fuga",
"price": 3000,
"description": "fuga fuga"
},
];
const json2csvParser = new Json2csvParser({ fields, header: true });
const csv = json2csvParser.parse(products);
console.log(csv);
// 以下、console.log(csv); の出力結果
"jan","price","description"
"001",1000,"spam, spam"
"102",2000,"hoge"" hoge"
"203",3000,"fuga fuga"
// 区切り文字は ,
// 文字列は " で囲まれている
// " はエスケープされている
// fields の文字列をヘッダーとして1行目に出力する (デフォルト true)
// fields に含まれていない "name" は出力しない
以上、Node.js で JSON をいい感じに CSV 形式に変換したい現場からお送りしました。