ツール
ガイド

JSON → CSV 変換

JSON

JSON オブジェクト配列を RFC 4180 準拠の引用符で CSV に平坦化し、ファイルとしてダウンロードします。

100% クライアントサイド バックエンドなし
入力
出力
このページの内容

JSON → CSV 変換とは?#

JSON → CSV コンバーターは、オブジェクトの JSON 配列——API やデータベースが行を返すときに出力する形——を受け取り、CSV テキスト(カンマ区切り値)として書き出します。各オブジェクトが 1 行になり、各最上位キーが列になり、最初の行がフィールド名を保持します。結果は、スプレッドシート・データツール・データベースが直接インポートできるプレーンテキストです。

CSV は些末なものに見えますが、正しく生成しようとすると一苦労です。どこでも実際に動くフォーマットはRFC 4180です——カンマ・ダブルクォート・改行を含むフィールドはダブルクォートで囲まなければならず、フィールド内に既に存在するダブルクォートは 2 つ重ねなければなりません("")。行は裸の改行ではなく CRLF で区切られます。これらを一つでも間違えると、Smith, John のような名前や He said "hi" のような値が、下流で列構造を黙って壊します——スプレッドシートは余分の列を見るか、フィールドを切り詰めます。

このコンバーターはそのすべてを代行します。さらに、JSON は階層的で CSV はフラットであるという厄介な事実にも対処します——入れ子のオブジェクトはドット記法の列に平坦化され(address.city)、平坦化できない配列やオブジェクトのフィールドはセル内で JSON テキストとしてシリアライズされます。区切り文字も選べます——カンマ・セミコロン・タブ・パイプ。「CSV」はロケールによって異なる意味を持つからです。

使い方#

  1. オブジェクトの JSON 配列を左側の入力ペインに貼り付けます。単独のオブジェクトや、{"data": [...]} のように単一キーの下に行を包んだオブジェクトも受け付けます。
  2. 区切り文字を選びます——,(既定)、;Tab|。セミコロンは多くのヨーロッパロケールの Excel が期待するもので、タブは TSV を与えます。
  3. ネストを平坦化(既定でオン)にチェックを入れて、入れ子のオブジェクトをドット記法の列に展開します。チェックを外せば、入れ子のオブジェクトは単一セル内の JSON テキストとして保持されます。
  4. CSV は出力ペインにリアルタイムで現れ、フィールドが必要とする場所にはクォートが適用されます。ステータス行は行数を報告します。
  5. ダウンロードをクリックして data.csv を保存するか、コピーでテキストをクリップボードに取り出します。
  6. サンプルは 2 行の小さなデータセットを読み込みます。クリアは両ペインをリセットします。

主な特徴#

  • RFC 4180 準拠のクォート。 フィールドの囲みと内側のクォートの重ねは、仕様が要求するちょうどそのタイミングで行われるため、値内のカンマ・クォート・改行が列構造を壊すことはありません。
  • CRLF の行末。 出力は Windows 形式の改行を使い、プラットフォームをまたぐ Excel や他のスプレッドシートソフトとの互換性を最大化します。
  • 区切り文字の選択。 カンマ・セミコロン・タブ・パイプ——下流のツールが期待するものを選べば、クォート処理も選んだ区切り文字に適応します。
  • ドット記法の平坦化。 入れ子のオブジェクトは名前付きの列に展開され、内側のフィールドが独立できます。配列としぶといオブジェクトは、削り落とされる代わりに JSON テキストのセルになります。
  • 不揃いな行でも安定した列。 ヘッダーはすべての行のキーの和集合を最初に現れた順で並べたものなので、余分や不足のフィールドを持つ行も正しく揃います。

実例#

サンプルを読み込むと、入力は 2 行の配列になります:

[
  { "name": "Ada Lovelace", "role": "Engineer", "skills": ["math", "logic"] },
  { "name": "Bob",          "role": "PM",       "skills": ["docs"] }
]

区切り文字を , に設定し、ネストを平坦化をオンにすると、列は nameroleskills になります。skills フィールドは配列なので JSON テキストにシリアライズされます。そのテキストはカンマとダブルクォートを含むため、クォートで囲まれ、内側のクォートは 2 つ重ねられます:

name,role,skills
Ada Lovelace,Engineer,"[""math"",""logic""]"
Bob,PM,"[""docs""]"

コンバーターが黙って、かつ正しく行ったことが 2 つあります。Ada Lovelaceクォートされていません——スペースだけを含み、区切り文字もクォートも改行もないため、囲む意味がないからです。一方、Ada の skills セルは内側のクォートを 2 つ重ねてクォートされています——カンマと " 文字の両方を含み、そのままでは行を壊すからです。

区切り文字; に切り替えると、skills セル内のカンマはもはや区切り文字と衝突しませんが、埋め込まれたダブルクォートがあるためフィールドは依然としてクォートされます——コンバーターは区切り文字だけでなく、RFC 4180 のトリガーのいずれかが存在すればクォートするからです。

よくある質問#

データ内のダブルクォートが "" に倍増されるのはなぜですか?#

クォート付きフィールド内にリテラルのダブルクォートを埋め込むための RFC 4180 の規則です——2 回書きます。He said "hi" のような値は CSV では "He said ""hi""" になります——外側のクォートがフィールドを囲み(" を含むため)、各内側の " は 2 つ重ねられることで、パーサーにフィールドの終わりではなくデータであると分からせます。CSV を正しく読むツールは、インポート時に元の 1 つのクォートに戻します。

フィールドにカンマが含まれています。列は壊れますか?#

いいえ。区切り文字・ダブルクォート・復帰・改行のいずれかを含むフィールドは自動的にダブルクォートで囲まれるため、Smith, John のような値は "Smith, John" になり、1 つの列に留まります。手動でエスケープする必要はありません。

カンマではなくセミコロンやタブを選ぶのはどんなときですか?#

ロケールです。多くのヨーロッパロケールの Excel は ; を既定のリスト区切りに使うため、カンマ区切りのファイルは再インポートするまで全体が 1 列に詰め込まれて開かれます。タブ区切り(TSV)は、データがカンマとセミコロンの両方を含みうる場合に最も安全です——現実の値にタブが現れることはほぼありません。下流のツールが期待するものを選んでください。

入れ子のオブジェクトや配列フィールドはどうなりますか?#

ネストを平坦化をオンにすると、入れ子のオブジェクトはドット記法の列(address.cityaddress.zip)に展開され、各内側の値が独自の列を持ちます。配列フィールドは列にロスなく平坦化できないため、セル内で JSON テキストとしてシリアライズされます——例えば ["math","logic"]。何も削り落とされません。各配列要素を独自の行にしたい場合は、事前に JSON を再構成してください。