TypeScript と Node.js を使って JSON データを CSV に変換する方法について解説します。
以下では、json2csv
ライブラリを使って簡単に JSON を CSV に変換する方法を紹介します。
json2csv
は、Node.js の環境で JSON を CSV に変換するための人気のライブラリです。
npm install json2csv
以下のコードは、JSON データを CSV に変換して、結果をコンソールに表示するものです。
import { parse } from 'json2csv';
const jsonData = [
{ name: 'Alice', age: 25, city: 'New York' },
{ name: 'Bob', age: 30, city: 'Los Angeles' },
{ name: 'Charlie', age: 35, city: 'Chicago' }
];
try {
const csv = parse(jsonData);
console.log(csv); // CSVデータをコンソールに出力
} catch (err) {
console.error('CSV変換エラー:', err);
}
このコードは、jsonData
を CSV 形式に変換し、コンソールに出力します。
もし変換した CSV をファイルに保存したい場合、Node.js の fs
モジュールを使って保存できます。
import { parse } from 'json2csv';
import * as fs from 'fs';
const jsonData = [
{ name: 'Alice', age: 25, city: 'New York' },
{ name: 'Bob', age: 30, city: 'Los Angeles' },
{ name: 'Charlie', age: 35, city: 'Chicago' }
];
try {
const csv = parse(jsonData);
// CSVをファイルに書き込む
fs.writeFileSync('output.csv', csv, 'utf8');
console.log('CSVデータが output.csv に保存されました');
} catch (err) {
console.error('CSV変換エラー:', err);
}
このコードは、jsonData
を CSV に変換し、それを output.csv
というファイルに保存します。
json2csv
には、さまざまなオプションがあります。例えば、カラムの順序を指定したり、特定のフィールドを除外したりすることができます。
const jsonData = [
{ name: 'Alice', age: 25, city: 'New York' },
{ name: 'Bob', age: 30, city: 'Los Angeles' },
{ name: 'Charlie', age: 35, city: 'Chicago' }
];
const csv = parse(jsonData, { fields: ['name', 'city', 'age'] }); // カラム順序を指定
console.log(csv);
このコードでは、CSV に出力するフィールドの順序を指定しています。
const jsonData = [
{ name: 'Alice', age: 25, city: 'New York' },
{ name: 'Bob', age: 30, city: 'Los Angeles' },
{ name: 'Charlie', age: 35, city: 'Chicago' }
];
const csv = parse(jsonData, { fields: ['name', 'city'] }); // 'age' フィールドを除外
console.log(csv);
このコードでは、name
と city
のみを出力し、age
フィールドを除外しています。
もし JSON データが非常に大きい場合、メモリ使用量を抑えるためにストリームを使うことを検討できます。json2csv
はストリーミングモードもサポートしています。
import { Transform } from 'stream';
import { parse } from 'json2csv';
import * as fs from 'fs';
const jsonData = [
{ name: 'Alice', age: 25, city: 'New York' },
{ name: 'Bob', age: 30, city: 'Los Angeles' },
{ name: 'Charlie', age: 35, city: 'Chicago' }
];
const transform = new Transform({
objectMode: true,
transform(chunk, encoding, callback) {
this.push(JSON.stringify(chunk) + '\n');
callback();
}
});
const output = fs.createWriteStream('output.csv');
output.write('name,age,city\n'); // ヘッダー行
transform.pipe(parse()).pipe(output);
jsonData.forEach((item) => {
transform.write(item);
});
transform.end();
このコードは、大量の JSON データを逐次的に処理し、メモリに大量のデータを保持せずに CSV に変換する方法です。
json2csv
を使用することで、TypeScript と Node.js で JSON を簡単に CSV に変換できます。特にファイルに保存する場合やカスタマイズが必要な場合も、オプションを活用することで柔軟に対応できます。