CSV を JSON に変換
最終更新:2026年10月1日
CSV の表を JSON のオブジェクト配列に読み戻します。ヘッダー行がキーになり、読み取り時に RFC 4180 の引用符規則を理解し、型の自動判定はオンにするかどうかを選べます。すべてブラウザ内で完結し、表は端末から出ません。
この変換が行うこと
CSV は列名を先頭の行に持つので、変換は直接的な対応になります。ヘッダーのセルがプロパティ名になり、以降の各行が配列の 1 オブジェクトになります。次の表は
id,name
1,Ada
2,Grace
[{"id":"1","name":"Ada"},{"id":"2","name":"Grace"}] になります。値がすべて文字列である点に注意してください。これが既定の動作で、理由は次の節で説明します。
ヘッダー行がスキーマになる
先頭の行はデータではなくヘッダーとして扱われます。次の 2 つの境界的なケースは、驚きとして残さず処理します。
- 名前の重複——繰り返されたヘッダーは一意にされます。
a,aはaとa_2になります。これがなければ、2 列目が 1 列目を黙って上書きしてしまいます。 - 名前が空——空のヘッダーセルは位置で命名されます。
column 1、column 2という具合で、キーが空文字列になることはありません。
型の自動判定は既定でオフ——意図的に
CSV に型はありません。どのセルもテキストで、ファイル自体は数値と、たまたま数字であるコードを区別できません。だから判定は既定でオフです。オフのままなら、すべての値が文字列として保たれ、これはファイルへの忠実な読み方です。
オンにすると、曖昧でないものだけを変換します。JSON の数値として書ける値——任意の負号、数字、任意の小数部と任意の指数——だけを数値とし、true、false、null はそれ自身として認識します。重要なのは、先頭にゼロがある値は変換しないことです。007 や 02139 はほとんど常に識別子——郵便番号、電話番号、アカウント番号、商品 SKU——だからです。一律に「数値にする」と 007 が黙って 7 になりデータが壊れますが、この規則はそうなりません。
引用符付きフィールド、埋め込みカンマと改行
読み取りは RFC 4180 に従います。これは JSON を CSV に変換するページが書き出すときに使うのと同じ規則です。二重引用符で囲まれたフィールドは、区切り文字、改行、または二重に書かれた二重引用符(読み戻すと 1 つになる)を含められます。したがって "Ada, Countess" はカンマを含む 1 つの値で、2 行にまたがる値も 1 つのセルのままです。CRLF と LF のどちらの行末も受け付け、先頭の UTF-8 バイト順マーク——Excel や一部の書き出しツールが付ける不可視の U+FEFF——は取り除かれるので、最初の列名が id になることはありません。
行の長さが揃わない場合
手で編集したファイルが整った長方形になっていることはまれです。フィールドがヘッダーより少ない行は空の値で埋め、多い行は切り詰めるので、どのオブジェクトも同じキーになります。別の選択肢——ファイル全体を拒否する——よりも、正しい行を返すほうが役に立ちますが、欠けている値が出力に含まれないのは事実です。
よくある質問
CSV はどのように JSON のオブジェクトに対応しますか?
先頭の行をヘッダーとして読み、そのセルがプロパティ名になります。以降の各行は、それらの名前をキーとするオブジェクトになり、配列にまとめられます。ヘッダーが id,name で 1 行だけ 1,Ada の CSV は [{ "id": "1", "name": "Ada" }] になります。
数値や真偽値が文字列になってしまうのはなぜですか?
型の自動判定は既定でオフになっており、これは意図的です。CSV に型はないため、007 が数値の 7 なのかコードの 007 なのかを変換ツールは知りようがありません。推測を誤ると、郵便番号・電話番号・アカウント ID のような識別子を黙って壊します。列が数値だと分かっているときだけ判定をオンにしてください。オンにしても、先頭にゼロがある値は文字列のままです。
判定をオンにしたとき、何が数値とみなされますか?
JSON の数値として書けるテキストだけです。任意の負号、先頭にゼロのない数字(値がちょうど 0 の場合を除く)、任意の小数部、任意の指数。true、false、null も認識されます。それ以外は、007 や 1,234 を含め、文字列のままです。
引用符付きフィールド、埋め込みカンマ、改行はどう読み取られますか?
解析は RFC 4180 に従います。二重引用符で囲まれたフィールドは、区切り文字、改行、または二重に書かれた二重引用符(読み戻すと 1 つになる)を含められます。したがって Ada, Countess を含むセルは "Ada, Countess" と書かれ、2 行にまたがる値も 1 つのフィールドのままです。CRLF と LF のどちらの行末も受け付けます。
ファイルに UTF-8 の BOM がありますが、最初の列名は壊れますか?
いいえ。先頭のバイト順マーク——Excel など一部のツールが CSV の先頭に付ける不可視の U+FEFF——は解析前に取り除かれます。そうでなければ最初のヘッダーは id と読まれてしまいます。ここでは id と正しく読まれます。
ヘッダーと合わない行はどうなりますか?
フィールドがヘッダーより少ない行は空の値で埋められ、多い行は切り詰められるので、どのオブジェクトも同じキーを持ちます。手で編集したファイルでは行の長さが揃わないことがよくあります。ここでは拒否せず受け入れますが、欠けているデータが出力に含まれないのは事実です。
逆の方向が必要ですか?JSON を CSV に変換 ではオブジェクト配列を表として書き出せます。不具合を見つけましたか?お問い合わせ。