やりたいこと
サーバ上のCSVファイルをクライアントサイドでJsonにして使用します。
使用するライブラリはnode-csvtojsonです。Nodejsがインストールされていること前提です。
GitHub - Keyang/node-csvtojson: Blazing fast and Comprehensive CSV Parser for Node.JS / Browser / Command Line.
Blazing fast and Comprehensive CSV Parser for Node.JS / Browser / Command Line. - GitHub - Keyang/node-csvtojson: Blazing fast and Comprehensive CSV Parser for...
クライアントにすべてのデータをダウンロードするので、ユーザ情報などの機密データやデータが大きい場合は別の方法を検討してください。
準備
プロジェクトのルートで以下のコマンドを実行してcsvtojson をインストールします。
npm i csvtojson
実装
実装は以下の通りです。
import csv from "csvtojson"
const convertCsv2Json = (txt) => {
csv().fromString(txt).then(
csv_data => {
console.log(csv_data);
}
)
}
const fetchSetting = async (url) => {
fetch(url).then(res => res.text().then(txt => convertCsv2Json(txt)));
}
fetchSetting("/setting.csv")
fetchSetting でcsvファイルをダウンロードしてconvertCsv2Jsonを呼んでいます。(引数の/setting.csvはcsvファイルのURLですので必要に応じて変更してください。)
convertCsv2JsonではダウンロードしたCSV をJsonにコンバートしています。
Jsonに変換されたものは以下の関数の中でcsv_data として使用可能です。
csv_data => {
console.log(csv_data);
}
日本語は文字化けをする可能性があります。CSVファイルはUTF8で保存してください。
実行例
入力のCSVと出力のJsonの例を示します。
1行目はタイトルとして扱われます。
/setting.csv
Name,Age,Country
Taro,25,Japan
Tom,21,USA
csv_data

ほかの出力方法
csv()に引数を渡すことで出力を変更することができます。
csv({ noheader: true, output: “csv” })
この設定だと1行目もデータとして扱われ、データは配列として保存されます。
/setting.csv
Name,Age,Country
Taro,25,Japan
Tom,21,USA
csv_data

csv({ output: “line” })
この設定だとデータは一つの文字列として保存されます。
/setting.csv
Name,Age,Country
Taro,25,Japan
Tom,21,USA
csv_data

コメント