本文へスキップ
App Museum
English

CSV⇔JSON変換ツール

CSV(カンマ区切り)やTSV(タブ区切り)とJSONを相互に変換します。Excelやスプレッドシートの表をJSONにしたり、JSONの配列を表に戻したりできます。入れ子のJSONは address.city のような列に展開します。結果は、Excelで文字化けしないCSVファイルとしてダウンロードできます。

CSVの区切り文字

JSON → CSV で、オブジェクトの中のキーを address.city、配列の要素を tags.0 のような名前の列にします。

使い方

  1. テキストエリアにCSVまたはJSONを貼り付けます
  2. CSVの区切り文字(カンマまたはタブ)を選びます。ExcelやGoogleスプレッドシートのセルをコピーして貼り付けたデータはタブ区切りなので、「タブ(TSV)」を選んでください
  3. 「CSV → JSON」または「JSON → CSV」ボタンを押します
  4. 変換結果が下に表示されます。「コピー」でコピーするか、「ダウンロード」でファイル(data.json、data.csv、data.tsv)として保存できます

変換結果のテキストの上には、データを表にした形が出ます。表計算ソフトと同じように、列に A・B・C…、行に 1・2・3… の番号を振り、見出しの行は太字にしています。「CSV → JSON」では読み取ったCSVを、「JSON → CSV」では変換してできたCSVを表にするので、列の分かれ方や、入れ子を展開した列の名前を変換結果のテキストを読まずに確かめられます。表に出すのは先頭の20行・30列までで、残りもテキストとダウンロードには入っています。

「CSVの1行目を見出し(JSONのキー)として扱う」にチェックが入っていると、CSVの1行目がJSONのキーになります。チェックを外すと、見出しのないデータとして、行ごとの配列に変換します。

「JSONの入れ子を列に展開する」にチェックが入っていると(最初から入っています)、「JSON → CSV」でJSONの値の中にあるオブジェクトや配列を、キーをたどった名前の列に分けてCSVにします。チェックを外すと、入れ子の値があったところで変換を止めます。

具体例

次のCSVを貼り付けて「CSV → JSON」を押すと:

name,age
Alice,30
Bob,25

次のJSONになります:

[
  {
    "name": "Alice",
    "age": "30"
  },
  {
    "name": "Bob",
    "age": "25"
  }
]

逆に、[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}] を貼り付けて「JSON → CSV」を押すと、元の表に戻ります。

APIの応答のような入れ子のJSONもCSVにできます。次のJSONを貼り付けて「JSON → CSV」を押すと:

[
  { "name": "Alice", "address": { "city": "Tokyo" }, "tags": ["admin", "dev"] },
  { "name": "Bob", "address": { "city": "Osaka" }, "tags": ["dev"] }
]

次のCSVになります。tags のように要素の数が行ごとに違う配列は、いちばん多い数まで列を作り、足りない行は空欄になります:

name,address.city,tags.0,tags.1
Alice,Tokyo,admin,dev
Bob,Osaka,dev,

「タブ(TSV)」を選んで変換した結果は、ExcelやGoogleスプレッドシートにそのまま貼り付けると列ごとのセルに分かれます。

変換のルール

CSV → JSON:

  • カンマ、改行、" を含む値は、"東京都, 港区" のように " で囲んで書きます。値の中の " は "" と2つ重ねます(RFC 4180 の書き方)
  • 改行はLF・CRLF・CRのどれでも読み取ります。空行は読み飛ばします
  • 値はすべて文字列のまま出力します。30 は "30" に、空欄は "" になります
  • 値の前後の空白は削らず、そのまま残します

JSON → CSV:

  • オブジェクトの配列を渡すと、すべてのキーを最初に現れた順に集めて1行目の見出しにします。そのキーを持たない行と null は空欄になります
  • オブジェクト1つだけを渡すと、1行の表として変換します
  • 配列の配列([["a", "b"], ["1", "2"]])を渡すと、見出しを足さずに行へ変換します
  • 入れ子を展開するときは、オブジェクトのキーと配列の番号(0から数えます)を . でつないだものを列名にします。{"a": {"b": [1, 2]}} は a.b.0 と a.b.1 の2列になります。中身のない {} と [] は、その名前の列の空欄になります
  • 展開した列は最初に現れた順に並べますが、同じオブジェクトや配列から出た列は隣り合わせにまとめます。後の件で配列が長くなっても、tags.1 は tags.0 のすぐ後ろに入ります
  • 同じキーが、ある件では値、別の件ではオブジェクトや配列のときは、a と a.b のように両方の列を作ります。値の列 a は、どちらが先に現れても展開した列の前に置きます。配列の番号とオブジェクトの数字のキー(["x"] の 0 と {"0": "y"} の 0)は、同じ列にまとめます
  • 入れ子の展開は、オブジェクトの配列(またはオブジェクト1つ)にだけ使えます。配列の配列の中に入れ子の値があるときは、変換を止めます
  • 区切り文字、改行、" を含む値だけを " で囲みます。例外として、1列だけの表の空欄は、空行と区別できるよう "" と出力します。改行はLFで出力します
  • 数値はJavaScriptが読み取った値で出力します。1.0 は 1 に、1e3 は 1000 になります。表記をそのまま残したい値は、JSONの側で文字列にしてください
  • 空の配列の行([["a"], []] の2件目)は、CSVの行として書けないため変換を止めます

FAQ

数値や真偽値がすべて文字列になるのはなぜですか?

CSVには型の情報がなく、00123(郵便番号や社員番号)や 1e5、桁の多いIDを数値として読むと、先頭の0が消えたり値が丸められたりするためです。このツールは書かれた文字をそのまま保ちます。数値が必要な場合は、変換後のJSONを使う側で変換してください。

行によって列数が違うCSVは変換できますか?

1行目を見出しとして扱う場合は変換できません。どの値がどのキーに入るか決められないため、列数の合わない行の番号を示して変換を止めます。「1行目を見出しとして扱う」のチェックを外すと、列数がそろっていなくても行ごとの配列として変換できます。

見出しに同じ名前の列があるとどうなりますか?

変換を止めて、重なっている見出しの名前を表示します。JSONのオブジェクトは同じキーを2つ持てず、そのまま変換すると片方の列が消えるためです。見出しを変えるか、見出しとして扱う設定を外してください。

入れ子になったJSONはCSVにできますか?

はい。「JSONの入れ子を列に展開する」にチェックが入っていれば(最初から入っています)、{"address": {"city": "Tokyo"}} は address.city という列になります。チェックを外すと、入れ子の値は1つのセルに収められないため、何件目のどのキーかを示して変換を止めます。

展開した列を「CSV → JSON」で入れ子に戻せますか?

いいえ。「CSV → JSON」は見出しをそのままキーにするので、address.city は "address.city" という1つのキーになります。見出しの . が区切りなのか名前の一部なのかを、CSVからは決められないためです。

展開した列名が、「.」を含むキーと同じになるとどうなりますか?

{"a": {"b": 1}, "a.b": 2} のように、入れ子を展開した列名と、. を含むキーの名前が同じになると、どちらの値の列か区別できなくなるため変換を止めます。別の件で重なる場合も、値が null や空の場合も同じです。どちらかのキーの名前を変えてください。

JSON → CSVで列の順番が変わることはありますか?

キーが 2025 のような整数の形をしている場合は変わります。JavaScriptがJSONを読み込むとき、整数の形のキーを小さい順に先頭へ並べるためです。それ以外のキーは書かれた順のままです。入れ子を展開した列は、同じオブジェクトや配列から出た列を隣り合わせにまとめるため、後の件で増えた列が途中に入ることがあります。CSV → JSONでは、整数の形の見出しでも列の順番を保ちます。

変換したCSVをExcelで開くと文字化けしますか?

「ダウンロード」で保存したCSVは文字化けしません。ExcelはBOM(ファイルの先頭に置く、UTF-8であることを示す3バイトの印)のないUTF-8のCSVをShift_JISとして読むことがあるため、ダウンロードするCSVとTSVにはBOMを付けています。コピーした結果を自分でファイルに保存する場合は、BOMが付かないので文字化けすることがあります。ファイルを作らずにExcelへ渡すなら、「タブ(TSV)」で変換し、結果をシートに直接貼り付ける方法もあります。

ダウンロードしたファイルの文字コードと改行は何ですか?

文字コードはUTF-8、改行はLFです。CSV(data.csv)とTSV(data.tsv)は先頭にBOMが付き、JSON(data.json)には付きません。JSONはBOMがあると読み取れないプログラムが多いためです。BOMのないCSVが必要なとき(先頭の見出しにBOMが混ざると困るプログラムで読むときなど)は、「コピー」した結果をエディタで保存してください。

= や + で始まる値はどう扱われますか?

そのまま出力します。表計算ソフトは =、+、-、@ で始まるセルを数式として解釈することがあります。出どころの分からないデータをCSVにして表計算ソフトで開くときは注意してください。

桁の多い整数を含むJSONが変換できません

12345678901234567890 のように、安全に扱える整数の範囲(±9007199254740991)を超える数値は、読み込んだ時点で値が丸められます。丸めた値を出力しないよう変換を止めています。1e400 のように大きすぎて読み取れない数値も同じ理由で止めます。桁を保つには "12345678901234567890" のように引用符で囲んで文字列にしてください。

JSONを貼り付けて「CSV → JSON」を押すとどうなりますか?

CSVとして読み取れなかった場合は、「JSON → CSV」を押すよう案内します。[1] のようにCSVとしても読み取れる場合は、CSVとして変換したうえで、結果の上に同じ案内を表示します。

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

いいえ。処理はすべてブラウザ内で完結し、入力したデータは外部へ送信されません。ページを再読み込みすると消えます。「ダウンロード」のファイルもブラウザの中で作り、押したときにだけお使いの端末へ保存します。

種別
ユーティリティ
カテゴリ
開発者向け
タグ
csv
json
tsv
converter
developer
  • Markdown表作成ツール

    ExcelやスプレッドシートのセルをコピーしてMarkdownの表に変換します。表の上でセルを編集し、列の左・中央・右揃え、行や列の追加・入れ替え・並べ替えができます。全角文字の幅を数えて縦線をそろえ、既存のMarkdownの表の整形や、Excelへの貼り戻しにも使えます。

    ユーティリティ開発者向けmarkdowntableexceltsvcsvconverterdevelopergithub
  • カラーコード変換ツール

    HEX・RGB・HSL のカラーコードを相互に変換し、HSV・CMYK・OKLCH の表記も表示。カラーピッカーやプレビューで確認でき、白・黒や指定した文字色とのコントラスト比(WCAG)も分かります。

    ユーティリティ開発者向けcolorhexrgbhslhsvcmykoklchcontrastcontrast-checkerwcagconverterdeveloper
  • docker run → Docker Compose 変換ツール(compose.yaml 作成)

    docker run のコマンドを貼るだけで compose.yaml に変換。ポート・環境変数・ボリューム・ネットワーク・ヘルスチェック・GPU など docker run の全オプションを読み取り、複数のコマンドを1つのファイルにまとめます。$(pwd) や $ の書き換え、Compose に無いオプションも知らせます。

    ユーティリティ開発者向けdockerdocker-composecomposeyamlcontainerconverterdeveloper