CSV の 1 行目はキーに、データの 1 行は JSON オブジェクト 1 つになります
CSV は、セルをカンマで、行を改行で区切った表です。JSON のオブジェクト配列は、名前と値の組をまとめたオブジェクトを角括弧 [ ] の中に並べたリストです。この 2 つは同じデータを表せます。CSV の 1 行目に書かれた列名がオブジェクトのキーになり、その下の 1 行がオブジェクト 1 つになります。上のサンプルでは、1 行目「商品コード,商品名,価格,在庫,備考」がキー 5 つになり、データの 3 行がオブジェクト 3 つになります。逆に JSON を CSV にするときは、オブジェクトに出てくるキーを集めて列を作り、オブジェクト 1 つを 1 行として書き出します。
このツールは、貼り付けたりファイルを開いたりした時点ですぐに変換します。区切り文字がカンマか、タブ・セミコロン・縦線かは自動で判定し、0012 のように先頭に 0 がある値は初期設定で文字のまま残します。API のレスポンスのようにオブジェクトの中にオブジェクトが入った JSON は、「顧客.名前」のような列に展開します。下の「表で確認」では、列ごとに数値・文字列・空欄がどれだけ混ざっているかを棒で確認でき、行番号を押すとその行がどのオブジェクトまたは CSV の行になったかが「行の変換内容」に表示されます。引用符やセルの数が合っていないときは、何行目のどこが問題かを示します。入力した内容やファイルはサーバーに送信されず、このブラウザー内だけで処理されます。
CSV と JSON を相互に変換する場面
- Excel の一覧を Web サービスに登録するとき: 商品・会員・在庫の一覧をスプレッドシートで管理していて、JSON 配列を受け取る API や管理ツールにまとめて渡したい場合に、CSV を JSON に変換します。
- API のレスポンスやログを表で見たいとき: 開発ツールやサービスから受け取った JSON を CSV にすれば、Excel や Google スプレッドシートで並べ替えやフィルターができます。レスポンスが { "data": [ … ] } のように包まれていても、中の配列を選んで表にできます。
- 設定・翻訳文・テストデータを作るとき: 複数人で編集しやすいスプレッドシートに値を集め、プログラムが読む JSON として書き出します。
- 2 つのプログラムが異なる形式しか扱えないとき: 一方は CSV でしか出力できず、もう一方は JSON しか受け付けない場合に、間で形式を変えて受け渡します。
変換の規則
- CSV の読み取り: 区切り文字でセルを、改行で行を分けます。区切り文字・二重引用符・改行を含むセルは、セル全体を二重引用符で囲み、セル内の二重引用符は 2 つ重ねて("")書きます。空白も値の一部としてそのまま残します(RFC 4180)。完全に空の行は読み飛ばします。ただし列が 1 つだけの CSV では、空の行を空の値として読みます。
- 列名: 1 行目がキーになります。名前が空だったり同じ名前が 2 回出てきたりすると、どの値がどのキーか決められないため、変換を止めます。1 行目からデータの場合は、「1 行目」を「データ」に切り替えてください。列1、列2 …がキーになります。
- セル数の確認: すべての行のセル数が 1 行目と同じでなければなりません。足りないセルを推測で補ったり、余ったセルを捨てたりはせず、ずれている行を知らせます。
- 値: 初期設定の「すべて文字列」は、すべてのセルを文字列として移します。「数値・真偽・null を判定」を選ぶと、下の表の規則に従って数値、true・false、null に変換します。
- JSON → CSV: オブジェクトごとに出てくるキーを、初めて出てきた順に集めて列にします。あるオブジェクトにないキーと null は空欄になります。オブジェクトの中のオブジェクトはドット(.)でつないだ列名に、配列は 0 から振った番号で展開します。
- CSV の書き出し: 区切り文字・二重引用符・改行を含むセルだけを二重引用符で囲み、行末は CRLF で書きます。Excel 用の BOM は保存するときだけ先頭に付け、コピーしたテキストには付けません。
値を数値に変換する基準
CSV には型がなく、すべてのセルが文字です。「数値・真偽・null を判定」は、JSON の数値の構文に合い、文字に戻しても同じ値になるセルだけを数値にします。JSON の構文では先頭の 0 を認めていないため 0012 は数値ではなく(RFC 8259)、ブラウザーが正確に扱える整数は 9,007,199,254,740,991(253 − 1)までなので、それより大きい注文番号は文字のまま残します。
| CSV のセル | すべて文字列 | 数値・真偽・null を判定 | 理由 |
|---|---|---|---|
0012 | "0012" | "0012" | 先頭の 0 は JSON の数値の構文に合わない |
25900 | "25900" | 25900 | 整数 |
1.50 | "1.50" | 1.5 | 値は同じで、末尾の 0 は消える |
1e3 | "1e3" | 1000 | 指数表記も数値 |
TRUE | "TRUE" | true | true・false は大文字小文字を区別しない |
null | "null" | null | 小文字の null のみ |
| (空欄) | "" | "" | 空文字列のまま |
9007199254740993 | "9007199254740993" | "9007199254740993" | 安全な整数の範囲を超える |
0.1234567890123456 | "0.1234567890123456" | "0.1234567890123456" | 有効数字 16 桁は正確に表せない |
-0 | "-0" | "-0" | 数値にすると 0 になるため文字のまま |
"1,234" | "1,234" | "1,234" | 桁区切りのカンマを含む値は文字 |
商品コード・郵便番号・電話番号のように計算しない値がある場合は、「すべて文字列」が安全です。「数値・真偽・null を判定」は列ではなくセルごとに判断します。0 で始まるコードは文字のまま残りますが、1234 や 0 だけのコードは数値の構文に合うので数値になり、同じ列に文字と数値が混ざることがあります。コードの列がある場合は「すべて文字列」を使ってください。
API レスポンスのような入れ子の JSON を表に展開する
JSON → CSV のサンプルは、注文の一覧が「注文」キーの中に入っているレスポンスです。最上位がオブジェクトの場合は、その中からオブジェクトの配列を探して表にし、複数ある場合は項目が最も多い配列を先に選びます。別の配列やオブジェクト全体を 1 行にしたいときは、入力欄の「表にする配列」で切り替えます。オブジェクトの中のオブジェクトは「顧客.名前」のようにドットでつなぎ、配列は「タグ.0」「タグ.1」のように番号を付けます。
| 番号 | 顧客.名前 | 顧客.都市 | 数量 | 支払い | タグ.0 | タグ.1 | メモ |
|---|---|---|---|---|---|---|---|
| A-0012 | 美咲 | 東京 | 2 | true | 新規 | クーポン | |
| A-0013 | 大輝 | 大阪 | 1 | false |
2 件目の注文には「タグ」がなく、「メモ」は null なので、どれも空欄です。空のオブジェクト { } と空の配列 [ ] は、値が消えたと誤解されないよう、セルに {}・[] という文字で残します。このように展開した CSV をもう一度 JSON に変換すると、「顧客.名前」はドットを含むキー 1 つになり、入れ子の構造には戻りません。1 行に 1 オブジェクトの JSON Lines(.jsonl)も、そのまま貼り付ければ 1 行を 1 行分として読み取ります。
Excel で開く・保存するとき
- 文字化けさせないために: Microsoft は、UTF-8 の CSV が BOM(バイト オーダー マーク)付きで保存されていれば、Excel で通常どおり開けると案内しています。そのため、CSV を保存するときは「Excel 用 BOM」が初期設定でオンになっています。BOM のないファイルは、Excel の「データ」タブの「データの取得」>「ファイルから」>「テキスト/CSV から」で開くと、文字コードを選べます。
- セミコロン区切りの CSV: Excel が CSV を保存するときの区切り文字は初期設定ではカンマですが、Windows の地域設定で別の文字に変えることができ、変えるとすべてのプログラムがその文字を使います。そのため、地域設定によってはセミコロンで区切られた CSV になることがあります。区切り文字の「自動判定」はセミコロンも選び、結果 CSV の区切り文字も変更できます。
- Excel からコピーしたセル: Excel や Google スプレッドシートでセルを選んでコピーし、貼り付けると、セルの間がタブで入ります。自動判定がタブを区切り文字に選ぶので、ファイルに保存せずにそのまま変換できます。
- 古い文字コードのファイル: UTF-8 として読めないファイルは、日本語版 Windows の Shift_JIS(Windows-31J、ブラウザーでは shift_jis などの名前で扱われる文字コード)として読み直し、入力欄の上にどの文字コードで読んだかを表示します。
- Excel ブック: .xlsx・.xls は圧縮されたブックなので直接は開けません。Excel で CSV として保存してから開いてください。
CSV の構文は RFC 4180、JSON の構文と数値の範囲は RFC 8259、Excel の BOM・リスト区切り文字・先頭の 0 に関する説明は Microsoft サポートの文書を 2026-10-20 に確認しました。
CSV を経由すると失われる情報
CSV のセルには文字しか入らないため、JSON のデータ型は CSV を経由する間に残りません。JSON → CSV → JSON と一巡させたときに、元と変わってしまうものを挙げます。
| 元の JSON | CSV のセル | 再び JSON(すべて文字列) |
|---|---|---|
"メモ": null | (空欄) | "メモ": "" |
"メモ": "" | (空欄) | "メモ": "" |
| キーなし | (空欄) | "メモ": "" |
"数量": 3 | 3 | "数量": "3" |
"支払い": true | true | "支払い": "true" |
"顧客": {"名前": "美咲"} | 顧客.名前 列に 美咲 | "顧客.名前": "美咲" |
null と空文字列、キーがない場合を区別する必要があるデータなら、元の JSON もあわせて保管するか、状態を書く列を別に設けてください。数値と true・false は「数値・真偽・null を判定」で戻せますが、もともと文字列だった "3" まで数値になります。表で確認の棒は元の JSON の値の種類を示すので、null だったセルは空欄と区別して「真偽・null」の色で塗られます。
よくある間違い
- 値の中のカンマを囲んでいない: 黒, グレー を二重引用符なしで書くとセルが 1 つ増え、「セルが 6 個あります」のようなエラーになります。"黒, グレー" のように、セル全体を囲んでください。
- セルの途中に引用符を書いている: ノートPCスタンド "アルミ" のようにセルの途中に二重引用符があるときは、セル全体を囲み、内側の引用符を 2 つ重ねて "ノートPCスタンド ""アルミ""" と書く必要があります。
- ヘッダーのない CSV をそのまま入れている: 最初のデータ行が列名になり、1 件が欠けます。「1 行目」を「データ」に切り替えてください。
- 大きな番号を数値で書いている: JSON に 9007199254740993 のような大きな整数を引用符なしで入れると、ブラウザーが読み込んだ時点で値が変わります。このツールはそのような値を見つけると変換を止め、二重引用符で囲んで文字列にするよう知らせます。
- 同じキーを 1 つのオブジェクトに 2 回書いている: JSON の標準は、オブジェクト内の名前は一意であるべきとしています(RFC 8259)。同じキーが 2 回あると、このツールは最後の値だけを残します。
- CSV を Excel で開くと 0012 が 12 になる: 変換結果に 0012 が残っていても、Excel は先頭の 0 を消し、大きな数値を 1.23E+15 のような指数表記に変えます。Excel の有効桁数は 15 桁までなので、16 桁以上のカード番号や注文番号は 16 桁目以降が 0 に変わります。「データ」タブの「テキスト/CSV から」で取り込み、その列の形式をテキストに指定してください。
制限と注意
- 入力は 5 MB(5,242,880 バイト)まで、ヘッダーを含めて 200,000 セルまで、結果は 10 MB まで変換できます。それより大きいデータは行単位で分け、分けたファイルごとに同じヘッダーを付けてください。
- 表で確認に描画するのは、先頭の 100 行・60 列だけです。変換とコピー・保存は全データに対して行います。
- CSV → JSON は常に平らなオブジェクト配列を作ります。ドットを含む列名を入れ子のオブジェクトに戻すことはしません。
- JSON Lines は読み取りのみです。結果を 1 行 1 オブジェクトで受け取りたい場合は、JSON 配列 ↔ JSONL の変換ツールを使ってください。
- JSON の小数は、ブラウザーが読み込む際に倍精度の数値に変わるため、非常に長い小数は末尾の桁が変わることがあります。桁を保ちたい値は文字列で入れてください。
- =、+、-、@ やタブで始まるセルは、Excel が数式として解釈することがあります(OWASP はこれを CSV インジェクション、数式インジェクションと呼んでいます)。このツールは値を書き換えないので、出どころの分からないデータを CSV にして Excel で開くときは、そうしたセルがないか先に確認してください。
出典
- 01IETF — RFC 4180: Common Format and MIME Type for CSV Files2005 年、Informational。§2 CRLF の行末、ヘッダー行は任意、各行のフィールド数は同じ、空白はフィールドの一部、改行・二重引用符・カンマを含むフィールドは二重引用符で囲む、内側の二重引用符は 2 つ重ねる — 2026-10-20 確認
- 02IETF — RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format§4 オブジェクト内の名前は一意であるべき(SHOULD)、§6 先頭の 0 は不可・整数は [−(253)+1, (253)−1] で相互運用可能、§8.1 UTF-8、BOM は付けない
- 03JSON LinesUTF-8、1 行に 1 つの JSON 値、行末は '\n'、拡張子は .jsonl
- 04Microsoft サポート — Excel で UTF-8 形式の CSV ファイルを正しく開く(Opening CSV UTF-8 files correctly in Excel)BOM 付きで保存した UTF-8 の CSV は通常どおり開ける。「データ」>「データの取得」>「ファイルから」>「テキスト/CSV から」
- 05Microsoft サポート — Import or export text (.txt or .csv) filesCSV 保存時の既定のリスト区切り文字はカンマ。Windows の地域設定で変更でき、変更するとすべてのプログラムに適用される
- 06WHATWG — Encoding StandardShift_JIS のラベル(shift_jis・windows-31j・ms932 など)、windows-1252、EUC-KR
- 07MDN — Number.MAX_SAFE_INTEGER253 − 1 = 9,007,199,254,740,991。これより大きい整数は安全に表現できない
- 08Microsoft サポート — 先頭の 0 と大きな数値を保持する(Keeping leading zeros and large numbers)Excel は先頭の 0 を消し、大きな数値を指数表記にする。有効桁数は 15 桁。「テキスト/CSV から」で取り込み、列をテキストにする
- 09OWASP — CSV Injection数式インジェクションの定義と、危険な先頭文字(=、+、-、@、タブ、キャリッジ リターン)
よくある質問
CSV を JSON に変換するには?
上の入力欄に CSV を貼り付けるか、ファイルを開くと、結果欄に JSON のオブジェクト配列がすぐに表示されます。1 行目の列名がキーになり、その下の 1 行がオブジェクト 1 つになります。コピーボタンで取り出すか、.json ファイルとして保存してください。
0012 のような先頭の 0 は消えませんか?
消えません。初期設定の「すべて文字列」はすべてのセルを文字列として移すため、0012 は "0012" になります。「数値・真偽・null を判定」を選んでも、0 で始まる値は JSON の数値の構文に合わないので文字のまま残ります。
価格や数量を文字列ではなく数値で受け取るには?
結果欄の「値」を「数値・真偽・null を判定」に切り替えると、25900 は数値の 25900、true・false は真偽値、null は null になります。9,007,199,254,740,991 より大きい整数と、有効数字が 16 桁以上の小数は、値が変わらないよう文字のまま残します。
変換した CSV を Excel で開くと文字化けします。
保存するときに「Excel 用 BOM」をオンにしてください。初期設定でオンになっており、BOM 付きの UTF-8 の CSV は Excel でそのまま開けます。BOM のないファイルは、Excel の「データ」タブの「テキスト/CSV から」で開き、文字コードを UTF-8 にしてください。
セミコロンやタブで区切られたファイルも変換できますか?
変換できます。区切り文字の「自動判定」が、先頭 20 行でカンマ・タブ・セミコロン・縦線のうち行ごとの数が同じものを選びます。Excel からコピーして貼り付けたセルはタブ区切りで入るので、そのまま変換されます。結果 CSV の区切り文字も選べます。
入れ子の JSON や API のレスポンスも CSV に変換できますか?
変換できます。最上位がオブジェクトなら、その中のオブジェクト配列を探して表にします。オブジェクトの中のオブジェクトは「顧客.名前」のようにドットで、配列は「タグ.0」のように番号で展開します。別の配列を使うときは「表にする配列」で選んでください。1 行に 1 オブジェクトの JSON Lines も読み込めます。
1 行目に列名がない CSV はどうすればよいですか?
入力欄の「1 行目」を「データ」に切り替えてください。1 行目もデータとして読み、キーは列1、列2 のように自動で付けます。切り替えないと、最初のデータ行が列名になり、1 件が欠けます。
入力したデータはサーバーに送信されますか?
送信されません。貼り付けたテキストや開いたファイルは、このブラウザー内だけで変換され、保存もされません。入力は 5 MB、200,000 セルまで処理できます。