CSV を JSON に変換

ここで CSV を JSON にすると、見出し行をキーにしたオブジェクトの配列で出てきます。多くの API やテストデータが前提にしている形です。引用符で囲まれた欄も、その中のカンマも正しく解釈され、数値に見える値は本物の数値になります。全部ブラウザーの中で動くので、顧客の名簿がこの機械から出ることはありません。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 可逆 何も捨てられません。JSONはCSVが持っていたものをそのまま保持します。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

そもそも CSV を JSON にする場面

CSV は、データベースも表計算ソフトも分析ツールも書き出す形式です。JSON は、API もテストデータも設定ファイルも要求する形式です。その間の距離は短く、そして面倒です。毎回使い捨てのスクリプトを書くより、道具を 1 つ持っておくほうがいい種類の隙間です。

出力は、見出し行をキーにしたオブジェクトの配列です

見出し行がキーになり、それ以降の 1 行が 1 つのオブジェクトになります。後ろにあるものがほぼ例外なく想定している形です。

引用符で囲まれた欄、その中のエスケープされた引用符、欄の中の改行は、きちんと解釈されます。ですから住所の欄にカンマが入っている CSV も、そのまま生き残ります。カンマで素朴に分割する処理では、こうはいきません。

型の推定と、それが噛みつく場所

型は推定されます。そしてここが確かめる値打ちのある部分です。数値に見える値は JSON の数値になり、`true` と `false` は真偽値になります。数量や区分にはほぼ確実にそれが望みどおりです。

識別子には間違った答えです。`007` は `7` になり、郵便番号や品番や口座番号は、先頭の 0 を黙って落とします。日本のデータではこれがよく当たります。`0600001` という郵便番号、`03` で始まる電話番号、13 桁の法人番号。最後のものは 0 が消えるどころか指数表示になります。数量ではなく符号を扱っているなら、頼る前に出力を見てください。CSV から JSON への変換が、正しい JSON と間違ったデータを同時に作る道としては、これが群を抜いて多いものです。

顧客データの書き出しを、アップロードせずに変換する

全部あなたのブラウザーの中で動くので、大きな書き出しでも機械が許す速さで変換され、そしてこの機械から出ません。この組み合わせでは、それがほかの変換より効いてきます。CSV は、たいてい顧客名簿か注文履歴か、社外の相手に説明したくない基幹システムからの書き出しだからです。

識別子を文字列のまま保つ

数値に見える値は数値になるので、符号の列を守る方法は、変換の前に「これは数値ではない」と分かる形にしておくことです。表計算ソフトで先頭に `'` を付ける、接頭辞を足す、書き出しの時点で引用符で囲む。どれでも文字として印が付きます。

一般則のほうは覚えておく値打ちがあります。その列の 2 つの値を足すことが一生ないなら、それは識別子で、文字列のままでいたがっています。郵便番号、品番、電話番号、口座番号、法人番号。全部この足し算の試験に落ちます。

空の欄が何になるか

空の欄は空文字列ではなく null になります。見出しが `a,b,c` の行に `1,,3` と書かれていれば、出てくるのは `{"a":1,"b":null,"c":3}` です。`1` を `"1"` ではなく数値にするのと同じ型の判定が、空の欄には null を割り当てます。

JSON を受け取る側がその 2 つを区別するなら、この違いは効いてきます。文字列を要求する JSON Schema は null をはねますし、NOT NULL で作られた列はその行を受け付けません。加えて CSV には、そもそも「空だった欄」と「無かった欄」の違いを表す方法がありません。その区別に意味があるなら、CSV の側で明示的に書くか、あとから復元するしかありません。元の形式が運べない情報を、変換機が取り戻すことはできません。

見出しが重複しているとき、足りないとき、そして日本語のとき

同じ見出しを持つ列が 2 つあると衝突します。オブジェクトのキーは一意だからです。後ろの列が勝ち、前の列は警告もなく消えます。データ行より短い見出し行は、余った列にキーを与えません。直す場所は CSV の見出し行です。1 行の修正で済み、その情報が存在する場所はそこだけです。

日本語の CSV には、もう 1 つ見ておくところがあります。見出しが日本語なら、JSON のキーも日本語になります。それ自体は正しい JSON ですが、受け取る側が ASCII のキーを前提にしていることはよくあります。そして Excel から書き出した CSV は CP932 のことが多く、UTF-8 として読まれた瞬間、キーが読めない記号の列になります。中身より先に、キーで気づける失敗です。書き出すときに UTF-8 を選ぶか、見出し行だけ英字に直してから変換してください。

どのくらいの大きさまで扱えるか

解析は速く、限界はメモリーです。配列全体を組み立ててから書き出すからです。数十メガバイトは普通に通ります。数百メガバイトになると、ブラウザーのタブが苦しみはじめます。

その大きさの書き出しなら、正しい道具はブラウザーの変換機ではなく、スクリプトの中の逐次読み込みの解析器です。900 MB のファイルの途中で力尽きるより、そう言っておくほうがましです。

出てくる形と、出てこない形

出力はオブジェクトの配列です。API もテストデータも、たいていのライブラリーも、それを想定しています。1 行 1 JSON の形式ではありませんし、ID の列をキーにしたオブジェクトでもありません。

どちらも、配列さえ手に入れば数行の変形で作れます。そしてどちらも、どの列がキーなのかを知らずにこちらで選ぶことはできません。配列は、いちばん前提の少ない形です。

CSV を JSON に変換する手順

  1. お手元の CSV ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に JSON を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった JSON ファイル をダウンロードします。

CSV と JSON——何が変わるか

CSVとJSONの比較
CSVJSON
正式名称Comma-Separated ValuesJavaScript Object Notation
拡張子.csv.json
メディアタイプtext/csvapplication/json
最初の公開19722001
仕様RFC 4180RFC 8259
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるか対応なしすべてのブラウザ
代わりに検討される形式XLSX, ParquetXML, YAML, NDJSON

残るもの

失われるものはありません。CSV も JSON も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

結果を開く

JSON は今のブラウザーならどれでも開けます。CSV はそこまでも届きません。ファイルがウェブページや申込フォームへ向かうのであれば、たいていはそれがこの変換の理由のすべてです。

開くプログラムが重なりません。CSV はMicrosoft Excel、LibreOffice Calc、pandasで、JSON はVisual Studio Code、jq、Postmanで開きます。結果を渡す相手には後者のどれかが要ります。

どちらの形式が何のためのものか

CSV は 1972 年に登場しました。 RFC 4180 で規定されています。ファイルが、それを書いた道具より長く生きなければならないなら、この一点には値打ちがあります。

JSON は 2001 年から使われています。規定は RFC 8259 です。Visual Studio Code、jq、Postmanがこの形式を読めます。

CSV は 1972 年、JSON は 2001 年に登場しました。人に渡すならたいてい古いほうが安全で、新しいほうは同じ仕事をより少ないバイト数で片づけます。

CSV から JSON:よくある質問

CSV ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

CSV から JSON への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

CSV を JSON に変換すると品質は落ちますか。

いいえ。JSON は同じ内容を何も捨てずに保持できるので、結果は品質の点で元のファイルと同じです。

CSV から JSON への変換は可逆ですか。

失われるものはありません。CSV も JSON も中身を劣化なしに保持します。この変換が変えるのは包み方であって品質ではないので、劣化が積み重なる心配をせずに何度でも繰り返せます。

これらのフォーマットについて