開発ツール

CSV⇔JSON変換ツール【無料・登録不要】Excelで文字化けしないBOM付き保存・Shift_JIS読み込み対応

CSV⇔JSON変換ツール【無料・登録不要】Excelで文字化けしないBOM付き保存・Shift_JIS読み込み対応
engblog-poster

CSV を貼り付けると JSON に、JSON を貼り付けると CSV に変換できる無料ツールです。引用符「"」で囲んだ値の中のカンマや改行も、CSV の決まり(RFC 4180)どおりに正しく扱います。変換した内容は表の形で確認できます。

Shift_JIS の CSV ファイルも文字コードを自動で判定して読み込めます。保存するときは、Excel で開いても文字化けしにくい BOM 付きの UTF-8 を選べます。入力したデータはお使いのブラウザの中だけで処理され、サーバーには一切送信されません。

基本の設定
CSV → JSON のオプション

値の型(初期値はすべて文字列。「001」や郵便番号・電話番号の先頭の 0 が消えないので安全です)

CSV・JSON ファイルをここにドラッグ&ドロップ(5MB まで。UTF-8 / Shift_JIS を自動判定)

入力したデータはお使いのブラウザ内だけで処理されます。サーバーへの送信や保存は一切行いません。

使い方

CSV を JSON に変換する

  1. 「変換」で「CSV → JSON」を選びます(最初からこの状態です)。
  2. 「区切り文字」で、カンマ・タブ・セミコロンのどれで区切られているかを選びます。
  3. 入力欄に CSV を貼り付けます。貼り付けると同時に、出力欄に JSON が表示され、その下に表の形のプレビューが表示されます。
  4. 「出力をコピー」でコピーするか、「出力をファイルとして保存」で data.json として保存します。

「1 行目を項目名(キー)にする」がオンのときは、1 行目の値をキーにしたオブジェクトの配列(例:[{"id": "001", "name": "山田 太郎"}])になります。オフにすると、1 行目もデータとして扱い、配列の配列(例:[["id", "name"], ["001", "山田 太郎"]])になります。試しに使ってみたいときは、「サンプルを入れる」を押してください。

値の型を選ぶ(数値・true / false・空欄)

CSV には「この値は数値」「これは文字列」という区別がありません。そのため、このツールは最初はすべての値を文字列として JSON にします。「001」のような番号や、郵便番号・電話番号の先頭の 0 が消えないので、これが一番安全です。必要なときだけ、次のオプションをオンにしてください。

オプション変換する値変換しない値(文字列のまま)
数値に見える値を数値にする12、-2.5、1e3 など、JSON の数値の書き方どおりの値001、+1、1.、前後に空白がある値、090-1234-5678
true / false を真偽値にするtrue、false(TRUE や False のような大文字も)yes、no、1、0 など
空欄を null にする何も入っていない値、値が足りない行の不足分空白だけの値

数値は、CSV に書かれたとおりの文字のまま JSON に入れます。12345678901234567890 のような大きな整数も、桁が丸められることはありません。

JSON を CSV に変換する

  1. 「変換」で「JSON → CSV」を選びます。
  2. 入力欄に JSON を貼り付けます。オブジェクトの配列(例:[{"id": "001", "name": "山田 太郎"}, …])が基本の形です。
  3. 「区切り文字」と「改行」を選びます。迷ったら、カンマと CRLF(最初の状態)のままで大丈夫です。
  4. 「出力をファイルとして保存」を押すと、data.csv(タブ区切りのときは data.tsv)として保存されます。「保存するファイルに BOM を付ける」がオン(最初の状態)なら、BOM 付きの UTF-8 で保存されます。

JSON の書き方に誤りがあるときは、何行目の何文字目が、なぜ間違っているのかを日本語で表示します。「入力欄のエラーの場所を選択」を押すと、入力欄の該当箇所が選択されます(CSV の引用符の閉じ忘れなども同じように表示します)。

ファイルを読み込む・逆向きに変換する

点線の枠に CSV や JSON のファイルをドラッグ&ドロップするか、「ファイルを選択」から選びます(5MB まで)。文字コードは UTF-8(BOM 付き・なし)・Shift_JIS・UTF-16 を自動で判定します。JSON のファイルなら「JSON → CSV」に、それ以外なら「CSV → JSON」に切り替わり、CSV の区切り文字も 1 行目から自動で判断します。

「出力を入力に移して逆向きに変換」を押すと、出力した内容を入力欄に移し、変換の向きを入れ替えます。CSV → JSON → CSV と戻して、元の CSV と同じになるかを確かめるときに便利です。

変換のルール

CSV と JSON はデータの表し方が違うので、そのままでは 1 対 1 に変換できない部分があります。このツールでは、次のように扱います。

場面このツールの扱い
CSV の空の行読み飛ばす
CSV の 1 行目(項目名)に同じ名前がある2 つ目以降に「_2」「_3」を付けて区別する
CSV の項目名が空欄・項目名より値が多い「列3」のように列の番号を項目名にする
CSV の行の値が項目名より少ない足りない値を空欄として扱い、注意を表示する
JSON のオブジェクトごとにキーが違うすべてのキーを、最初に出てきた順に列にする。ないキーは空欄
JSON の値がオブジェクトや配列(入れ子)1 行の JSON の文字列にして 1 つのセルに入れる(例:["営業","東京"])
JSON の true / false / nulltrue・false という文字、null は空欄にする
JSON の数値書かれたとおりの文字にする(大きな整数も桁が落ちない)
JSON の配列の配列([["a","b"],[1,2]])1 つ 1 つの配列をそのまま 1 行にする(項目名の行は付けない)
JSON が値だけの配列([1,2,3])「value」という 1 列の CSV にする
JSON が 1 つのオブジェクト({…})1 行のデータとして扱う

入れ子を JSON の文字列にした場合や、キーがそろっていない場合は、状態表示に「注意」として件数を表示します。

CSV と JSON の違い

CSV(Comma-Separated Values)は、表のデータを「1 行 = 1 件」「値をカンマで区切る」形で書いたテキストです。JSON(JavaScript Object Notation)は、「キーと値の組み」や「配列」を入れ子にして書けるテキストです。同じデータを書くと、次のようになります。

id,name,tel
001,山田 太郎,090-1234-5678
[
  {
    "id": "001",
    "name": "山田 太郎",
    "tel": "090-1234-5678"
  }
]
比べる点CSVJSON
データの形行と列だけの表入れ子にできる(オブジェクトの中に配列など)
値の型区別がない(すべて文字)文字列・数値・true / false・null を区別する
ファイルの大きさキーを毎行書かないので小さいキーを毎回書くので大きくなりやすい
主な使い道Excel との受け渡し、データの一括登録・書き出しWeb API の通信、設定ファイル、プログラム間のデータの受け渡し
決まりRFC 4180(よく使われる書き方をまとめた情報提供の文書で、方言が多い)RFC 8259(標準の仕様で、書き方は 1 通り)

CSV の書き方の決まり(RFC 4180)

CSV にはソフトごとの「方言」がありますが、よく使われる書き方は RFC 4180(2005 年 10 月)にまとめられています。主な決まりは次のとおりです。このツールは、この決まりに沿って読み書きします。

  • 1 件のデータ(レコード)は 1 行に書き、改行(CRLF)で区切る。最後の行の改行はあってもなくてもよい
  • 1 行目に、ほかの行と同じ形で項目名(ヘッダー)の行を置いてもよい
  • 空白も値の一部として扱い、取り除かない
  • 改行・ダブルクォート「"」・カンマを含む値は、全体を「"」で囲む
  • 値の中の「"」は、「""」と 2 つ重ねて書く(例:say "hi" は "say ""hi""")

このツールは、読み込むときは CRLF・LF・CR のどの改行にも対応し、書き出すときは改行を CRLF か LF から選べます。区切り文字・「"」・改行を含む値だけを「"」で囲みます。

Excel で CSV が文字化けするときの対処法

UTF-8 で書かれた CSV を Excel でダブルクリックして開くと、日本語が「縺薙s縺ォ縺。縺ッ」のような読めない文字になることがあります。Microsoft のサポート記事「Excel で CSV UTF-8 ファイルを正しく開くには」では、BOM(バイト オーダー マーク)付きで保存された UTF-8 の CSV は、通常どおり開けると説明されています。BOM は、ファイルの先頭に付ける「このファイルは UTF-8 です」という目印の 3 バイト(EF BB BF)です。詳しくは「UTF-8とは?仕組み・バイト数・BOMの有無をわかりやすく解説」で解説しています。

対処法 1:BOM 付きの UTF-8 で保存し直す

  1. このツールの「変換」で「CSV → JSON」を選び、文字化けする CSV ファイルを点線の枠にドラッグ&ドロップします。
  2. 表のプレビューで、日本語が正しく表示されていることを確認します。
  3. 「出力を入力に移して逆向きに変換」を押します。
  4. 「保存するファイルに BOM を付ける」がオンになっていることを確認し、「出力をファイルとして保存」を押します。
  5. 保存された data.csv を Excel で開きます。

対処法 2:Excel の「テキストまたは CSV から」で読み込む

ファイルを変えずに Excel 側で読み込み方を指定する方法もあります。Microsoft のサポート記事では、次の流れが紹介されています(Excel のバージョンによって、ボタンの名前や場所が少し違います)。

  1. Excel で新しいブックを開き、[データ] タブを選びます。
  2. [テキストまたは CSV から] を選びます(バージョンによっては [データの取得] → [ファイルから] の中にあります)。
  3. 表示された画面で CSV ファイルを選んで開きます。
  4. プレビューの画面で、文字コード(英語版では「File Origin」)が UTF-8 になっているか、区切り記号が正しいかを確認し、[読み込み] を押します。

Microsoft Learn の Power Query の説明では、文字コードは自動では判定されず、UTF-8 と判断されるのはファイルが BOM で始まる場合だけとされています。BOM のない UTF-8 の CSV を読み込むときは、文字コードの選択を確認してください。

「001」の先頭の 0 が消えるとき

CSV をダブルクリックで開くと、Excel は既定の設定で各列のデータの種類を判断するため、「001」が数値の 1 になることがあります。Microsoft のサポート記事「テキスト (.txt または .csv) ファイルのインポートまたはエクスポート」では、先頭の 0 を残したいときは「テキスト インポート ウィザード」を使って列をテキストとして読み込む方法と、ファイルの拡張子を .csv から .txt に変えてから開くとウィザードが表示される方法が紹介されています。上の「テキストまたは CSV から」で読み込む場合は、データ型を自動で判断しない設定にすると、すべての列をテキストとして読み込めます。

文字化けの原因そのものについては、「文字コードとは?UTF-8・Shift_JIS・EUC-JPの違いと文字化けの原因・直し方」もあわせてご覧ください。すでに文字化けしてしまったテキストを元に戻したいときは、「文字化け復元ツール」が使えます。

CSV インジェクションとは?

CSV インジェクション(数式インジェクションとも呼ばれます)は、Web サイトなどが外部から入力された値をそのまま CSV に書き出し、それを Excel などの表計算ソフトで開いたときに、値が数式として扱われてしまう問題です。たとえば、問い合わせフォームの名前欄に「=」で始まる文字を入れられると、管理者がその CSV を開いたときに数式として計算されるおそれがあります。

セキュリティの団体 OWASP の解説では、次の文字で始まるセルがないようにすることが挙げられています。

  • イコール「=」、プラス「+」、マイナス「-」、アットマーク「@」
  • タブ(0x09)、キャリッジリターン(0x0D)、ラインフィード(0x0A)
  • 全角の「=」「+」「-」「@」

このツールの「= + – @ などで始まる値の先頭に '(シングルクォート)を付ける」をオンにすると、JSON → CSV の変換で、これらの文字で始まる値の先頭にシングルクォート「'」を付けます(OWASP が挙げている方法の 1 つです)。ただし、-5 や +1 のような数値だけの値は、数式にならないのでそのままにします。項目名の行にも同じ対策をします。

この対策は、最初はオフにしています。「'」を付けると値そのものが変わってしまい、CSV を別のプログラムで読み込むときに困ることがあるためです。外部の人が入力した値を含む CSV を、Excel などで開く予定があるときにオンにしてください。なお OWASP は、Excel で保存し直すと引用符や「'」が取り除かれる場合があることや、すべての表計算ソフトとすべての利用先で安全になる方法はないことも注意として挙げています。

よくある質問

入力したデータは保存されませんか?

保存されません。変換はすべてお使いのブラウザの中で行われ、サーバーへの送信も保存も行いません。ページを閉じると入力内容は消えます。とはいえ、個人情報やパスワードなどの大切な情報は、どのツールであっても必要以上に貼り付けないようにするのが安全です。

CSV → JSON → CSV と変換すると、元に戻りますか?

値は元に戻ります。ただし、次の点は変わることがあります。空の行は読み飛ばします。「"」で囲む必要のない値を「"」で囲んでいた場合は、囲みが外れます。入力欄に貼り付けた CSV は、値の中の改行も含めて LF にそろいます。改行は「改行」で選んだもの(CRLF または LF)になります。また、項目名の行しかない CSV は空の配列になるので、項目名は戻りません。

「001」が「1」になってしまいます

このツールでは、「数値に見える値を数値にする」をオンにしても、「001」は JSON の数値の書き方ではないので文字列のまま残します。Excel で開いたときに 0 が消える場合は、上の「「001」の先頭の 0 が消えるとき」をご覧ください。

タブ区切り(TSV)やセミコロン区切りの CSV も使えますか?

使えます。「区切り文字」で「タブ」か「セミコロン」を選んでください。ファイルを読み込んだときは、1 行目に一番多く出てくる区切り文字を自動で選びます。

どのくらい大きなデータまで扱えますか?

ファイルの読み込みは 5MB までです。変換はすべての行に対して行いますが、表のプレビューは先頭の 100 行・30 列までを表示します(長い値は 200 文字で省略して表示します)。

関連する記事・ツール

ABOUT ME
hr
hr
エンジニアとして働いている hr です。仕事や資格勉強で「こんなツールがあれば」と感じたものを、無料Webツールと解説記事にして発信しています。
記事URLをコピーしました