JSON を CSV 形式に変換する npm json2csv が超便利

Tadashi Shigeoka ·  Thu, April 5, 2018

JSON をいい感じに CSV 形式に変換してくれる npm json2csv が便利だったのでご紹介します。

npm | エヌピーエム

前提) 適当な独自 CSV で出力しない

まず、前提として適当な独自 CSV で出力しないことです。

詳しくは、それでも独自のCSVを書くつもりですか? | POSTD に書いてあります。

console.log([ 'a', 'b', 'c' ].join(','));

みたいなカンマ区切りで CSV 出力しようと考えている方はかならず POSTD の記事を読みましょう。

json2csv の使い方

個人的によく使うパターンで 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 形式に変換したい現場からお送りしました。