CSV ⇄ JSON

どちらかの形式を貼り付けると、入力に合わせてもう一方が表示されます。双方向に対応。

使い方

  1. CSV(または TSV、セミコロン区切りのテキスト)または JSON 配列を入力欄に貼り付けてください。入力に合わせて結果が描画され、ボタンを押す必要はありません。方向は先頭の文字から判定され、結果の上に表示されるので確認できます。
  2. 方向が誤って判定された場合は、CSV → JSON または JSON → CSV を選んでください。すべてが1列に入ってしまう場合は、区切り文字を「自動」から目的の文字に変更します。ファイルがデータから始まる場合は「先頭行をヘッダーとして扱う」をオフにすると、オブジェクトではなく配列の配列が得られます。
  3. 結果をコピーまたはダウンロードします。どちらも画面に表示されている正確なテキストを使い、ファイル名は data.json または data.csv です。「サンプルを読み込む」を押すと、現在の方向に応じた例が入力されます。

例

入力(CSV)

order_id,customer,note,zip,amount,shipped
1001,"山田, 花子",返金を希望,00501,89.90,true
1002,佐藤 健,,10001,42.00,false

出力(JSON)

[
  {
    "order_id": 1001,
    "customer": "山田, 花子",
    "note": "返金を希望",
    "zip": "00501",
    "amount": 89.9,
    "shipped": true
  },
  {
    "order_id": 1002,
    "customer": "佐藤 健",
    "note": "",
    "zip": 10001,
    "amount": 42,
    "shipped": false
  }
]

この出力で確認すべき点は4つあります。「山田, 花子」内のカンマは行を分割せず値の中に残りました。zip の 00501 は、そのままでは 501 になってしまうため先頭のゼロが保たれました。10001 は数値になったため、zip 列は型が混在します。すべての値を文字列のままにするには「数値と真偽値を判定」をオフにしてください。また 89.90 は 89.9 になりました。JSON の数値は末尾のゼロを保持できないためです。

ルール・制限・既知の問題

  • ファイルのアップロード、ドラッグ&ドロップ、URL からの取得には対応していません。テキストを貼り付けてください。ドロップゾーンは結果に必要な高さを奪い、ファイルを正しく読むには非 UTF-8 エンコーディングの処理が必要になります。CSV ビューアーはそれに対応している(GB18030、Big5、Windows-1256)ため、そこでファイルを開いてテキストをコピーしてください。
  • 入力は1,000,000文字までです。200,000文字を超えると、入力が止まるまで結果の更新を待ち、その旨を表示します。上限を超えると明示的なエラーになり、入力が黙って切り詰められることはありません。
  • 型判定はセルごとで保守的です。true / false / null(小文字のみ)と厳密な JSON 数値のみを変換します。先頭にゼロがある整数(00501)や16桁以上の数値(長い ID)は常に文字列のままです。空のセルは null にならず "" のままです。
  • JSON の数値は末尾のゼロを保持できないため、89.90 は 89.9、42.00 は 42 になります。すべての値を入力どおりに保つには「数値と真偽値を判定」をオフにしてください。
  • 列数は最も幅の広い行に合わせるため、フィールドが失われることはありません。短い行は空文字列で埋められ、余分なフィールドには自動生成された名前が付きます。先頭行と一致しない行は行番号で一覧表示されます。
  • 重複した列名は上書きせず、_2、_3 … の接尾辞を付けて改名します。上書きすると列全体が黙って失われるためです。ヘッダーのセルが欠けているか空の場合は column_N になります。これらの名前は機械可読で、すべてのインターフェース言語で同じです。
  • JSON → CSV は、オブジェクトの配列(主要なケース)、配列の配列(位置ベースの列)、単一のオブジェクト、単純な値の配列(「value」列1つ)に対応します。それ以外(最上位の単一値、オブジェクトと他の値が混在する配列)は行と列を示して拒否され、推測されることはありません。
  • ネストしたオブジェクトは既定でドット付きキー(address.city)に平坦化されます。配列は平坦化されず、セル内にコンパクトな JSON として書き込まれます。平坦化をオフにすると、ネストしたオブジェクトも JSON のまま保持されます。null は空のセルになります。
  • JSON は厳密に解析されます。コメント、末尾カンマ、単一引用符、エスケープされていない制御文字は許可されず、ネストは64階層までです。1行1オブジェクト(JSON Lines)は受け付けません。先にオブジェクトを配列で囲んでください。
  • CSV は寛容な側です。閉じられていない引用符はテキストの末尾までまとめられ、その行番号が示されます。空行はスキップされて数えられ、フィールド数が誤った行は一覧表示されます。ハードエラーになるのは JSON 側のみです。
  • 出力 CSV は CRLF 改行で、バイトオーダーマークなしで書き出され、コピーした内容と同一です。非ラテン文字の CSV をダブルクリックして Excel で文字化けする場合は、データ → テキスト/CSV からインポートし、UTF-8 を選んでください。
  • 対象外: .xlsx、アーカイブ、複数ファイル、JSON Lines、YAML/XML/SQL/Excel へのエクスポート、並べ替え、絞り込み、列の選択、重複排除。これらは CSV ビューアーと設定ファイル変換でカバーしています。何もアップロード、保存、URL への埋め込みは行いません。

データをもう一方の形式にした後によく使われるツールです。