この変換ツールでできること
CSV は、表計算ソフトやデータベースがよく使うエクスポート形式です。1行に1レコードで、値はカンマで区切られています。JSON は、ほとんどの API、JavaScript のコード、NoSQL データベースが受け取る形式です。このツールは一方をもう一方に変換します。
見出し行がある場合、CSV の各行は JSON のオブジェクトになり、列名がキーになります。見出し行がない場合、各行は値の配列になります。解析には、十分にテストされた CSV ライブラリ Papa Parse を使っており、クォートで囲まれたフィールド、クォート内のカンマ、セル内の改行も扱えます。
使い方
- CSV から JSON(逆方向なら JSON から CSV)を選びます。
- データを貼り付けるか、ファイルを開く で
.csvや.tsvファイルを読み込むか、サンプル を押します。 - オプションを設定します。変更すると JSON がすぐに更新されます。
- 区切り文字:自動検出、カンマ、セミコロン、タブ、パイプ。
- 出力:スペース2つ、スペース4つ、圧縮。
- 1行目を見出しにする:オンなら名前付きのキーを持つオブジェクト、オフなら配列になります。
- 数値と true/false を変換:
12を数値に、trueを真偽値に変換します。オフにすると、すべての値が文字列のままになります。 - 空行をスキップ:表計算ソフトが末尾によく付け足す空の行を無視します。
- コピー または ダウンロード で、結果を
.jsonファイルとして保存します。
ステータス行には、読み込んだ行数と列数、そして検出した区切り文字が表示されます。
変換例
カンマを含む名前をクォートで囲んだ CSV です。
id,name,email,city,signup_date,active,orders
1,Ada Lovelace,[email protected],London,2024-03-01,true,12
2,"Hopper, Grace",[email protected],New York,2024-04-17,false,3
これが次のようになります。
[
{
"id": 1,
"name": "Ada Lovelace",
"email": "[email protected]",
"city": "London",
"signup_date": "2024-03-01",
"active": true,
"orders": 12
},
{
"id": 2,
"name": "Hopper, Grace",
"email": "[email protected]",
"city": "New York",
"signup_date": "2024-04-17",
"active": false,
"orders": 3
}
]
「Hopper, Grace」を囲むクォートのおかげで、名前の中のカンマが保たれています。id と注文数は数値に、true と false は真偽値になり、JSON には日付型がないため日付は文字列のままです。
テキストのまま残る値
数値に見える値をすべて数値にすると、データが壊れることがあります。このツールは、変換すると値が変わってしまう場合はテキストのまま残します。
[
{
"name": "Ada",
"zip": "02134",
"phone": "0207 946 0000"
}
]
郵便番号の先頭のゼロは残ります。先頭がゼロの ID や、JavaScript が正確に保存できない長さの整数にも同じルールが適用されます。セミコロン区切りのファイルで 2,50 のように小数点をカンマで書いた価格も、JSON の数値として正しくないので文字列のまま残ります。日本の電話番号(090 で始まる携帯番号など)や、先頭が 0 の社員番号も同様に文字列として保たれます。
JSON から CSV へ
JSON から CSV を押して、オブジェクトの配列を貼り付けます。どれかのオブジェクトに出てくるキーはすべて列になり、最初に出てきた順に並びます。ネストしたオブジェクトを展開 をオンにすると、ネストしたデータはドット区切りの列名になります。
id,name,address.city,address.zip,tags
1,Ada,London,NW1,"[""admin"",""dev""]"
2,Grace,New York,,
Grace には郵便番号がないので、そのセルは空です。tags の配列は JSON のテキストとして書き込まれ、CSV の形式で必要なとおりクォートが二重になっています。配列の配列は、見出しなしで1行ずつ書き込まれます。ダウンロード を押すと、Excel、Numbers、Google スプレッドシートで開ける .csv ファイルとして保存できます。
行の列数が合わないとき
見出しより値が多い行や少ない行があっても、ツールは JSON を出力し、表計算ソフトでの行番号で問題の場所を示します。たとえばメッセージの最後に「確認してください:3行目:Too many fields: expected 2 fields but parsed 3。」(フィールドが多すぎます。2つのはずが3つありました)のように表示されます。問題の説明は CSV パーサーのメッセージをそのまま表示するため、英語のままです。1行目は見出し行です。開いたまま閉じられていないクォートも、同じように報告されます。ファイルのその行を直して、もう一度貼り付けてください。
ヒント
- JSON は JSON整形ツール で確認できます。キーの並べ替えや圧縮もできます。
- 設定ファイル用に YAML が必要なら、ここで JSON に変換してから JSON YAML 変換ツール を使ってください。
- データを README に載せたいときは、Markdown 表作成ツール に同じ CSV や表計算ソフトのセルを貼り付けられます。
- すべての値を文字列のままにしたい場合、たとえば型を自分で判定するシステムに取り込む前などは、数値と true/false を変換 をオフにしてください。
- 読み込んだファイルは UTF-8 として扱われます。日本語版の Excel で通常の CSV 形式で保存したファイルは Shift_JIS のことが多く、その場合は日本語が文字化けします。Excel の保存形式で UTF-8 の CSV を選んで保存し直してから開いてください。また、ダウンロードされる CSV は BOM なしの UTF-8 なので、Excel でダブルクリックして開くと日本語が文字化けすることがあります。Google スプレッドシートで開くか、Excel のデータ取り込み機能で文字コードに UTF-8 を指定して読み込んでください。
CSV を JSON に変換するほかの方法
- Python:標準の csv モジュールの DictReader で行を辞書として読み込み、json.dump で書き出せます。
- csvkit:
csvjsonコマンドで、ターミナルから CSV ファイルを JSON に変換できます。 - Excel と Google スプレッドシート には JSON での書き出し機能がありません。まず CSV で保存してから、ここで変換してください。
- jq は
@csvフィルターで逆方向、つまり JSON から CSV への変換ができます。
処理はすべてブラウザ内で行われます。大きなファイルは少し時間がかかりますが、何もアップロードされません。