Json To Csv LogoJson To Csv

JSONをCSVに変換できますか?変換前に知っておくべきこと(2026年ガイド)

答えはイエスです。行と列に並べられるデータなら、JSONはCSVに変換できます。フラットなレコードのリストは完璧に変換でき、ネストされたオブジェクトはドット記法の列にフラット化されます。変換で変わる点・変わらない点と、無料で変換する3つの方法を解説します。

更新日: 2026-10-069 分で読めます

短い答え:はい、ただし条件が1つ

はい — JSONはCSVに変換できます。条件は1つだけ、構造の問題です。CSVは行と列からなるフラットな表なので、JSONもその形で表せなければなりません。実際のところ、世の中のほとんどのJSONはすでにその条件を満たしています。API、データエクスポート、ログが返すのは圧倒的に、レコードのリスト(オブジェクトの配列)か単一レコード(1つのオブジェクト)であり、どちらも自然に表計算ソフトの形に写像されます。1オブジェクト=1行、1キー=1列です。

つまずくポイントは変換そのものではなく、データの形です。JSONはネストを許します — オブジェクトの中にオブジェクト、オブジェクトの中にリスト — 一方CSVにはネストという概念がありません。つまり「JSONをCSVに変換できますか?」の裏には、たいてい3つの小さな疑問があります。ネストされたデータは残るのか、何か失われるのか、特別なソフトが必要なのか。答えは「フラット化すれば残る」「注意すればほぼ何も失われない」「不要 — 無料のブラウザツールで十分」です。

CSVに必要なもの、JSONが持っているもの

CSVファイルは意図的にシンプルです。1行目が列名を宣言し、以降の各行が同じ順序で値を保持する。それがフォーマット全体です。データ型はなく(すべてテキスト)、ネストなし、コメントなし、数式なし。一方JSONはずっと柔軟です。値は文字列、数値、真偽値、null、オブジェクト、配列のいずれかで、好きなだけ深くネストできます。

そのギャップが、この変換のすべてです。JSONをCSVにするというのは、JSON文書の各断片がどの行・どの列に入るかを決める作業です。よくある形なら写像は明白です。

  • フラットなオブジェクトの配列 → 1オブジェクトが1行、1キーが1列。完璧なケースです。
  • 単一のフラットなオブジェクト → ヘッダー行の下に1行。単純そのものです。
  • ["a", "b"] のような単純な値の配列 → 1つの列に1行ずつ値が入ります。
  • ネストされたオブジェクトや、オブジェクトを含む配列 → 先にフラット化が必要です。次のセクションで解説します。

あなたのJSONが最初の形で、しかもAPIのレスポンス由来なら、変換はワンクリックで考えることなど何もありません。このガイドの残りは、それ以外の場合のためのものです。

JSONがCSVに完璧に変換される場合

理想的な入力はこうです:すべてのオブジェクトが同じフラットなキーを持つJSON配列。各オブジェクトが1行に、各キーが列ヘッダーになり、何も作り出さず、推測せず、捨てもしません。

JSON
[
  {"name": "Ana", "email": "ana@example.com", "plan": "pro"},
  {"name": "Bo", "email": "bo@example.com", "plan": "free"}
]

これがCSVになると、ヘッダー行 name,email,plan の後に2行のデータ行が続きます。ロスなし、可逆の写像です。この形なら無料コンバーターに貼り付けるだけで一発変換できますし、後述するExcelのPower QueryやPythonのスニペットが想定しているのもこの形です。配列内のすべてのオブジェクトが同じキーを持っていれば、ここで読むのをやめてそのまま変換して大丈夫です。

多少のばらつきは問題ありません:一部のオブジェクトにキーが欠けていても、その行のその列が空セルになるだけです。コンバーターは全オブジェクトのキーの和集合を列にするので、ばらついたデータもエラーにならず優雅に処理されます。

ややこしい点:ネストされたオブジェクトと配列

実際のJSONが完全にフラットなことは稀です。注文レコードなら、顧客情報が customer.name の中に、合計金額が pricing.total の中に埋もれているかもしれません。CSVには「中」という概念がないので、コンバーターはドット記法でネストを列名にフラット化します。customer.name は文字通り customer.name という列になり、その値がその列に入ります。

実際に何が起きるかを示すため、このサイト独自の変換エンジンでフラット化オプション(デフォルトでオン)を使い、ネストされた注文レコードを変換してみました。入力は3階層までネストされたオブジェクト — customer.contact.email、shipping.city、pricing.total — を含み、エンジンは次の列を生成しました。

  • 単純な値のリスト(例:["red", "blue"])は、値をセミコロン+スペースで結合した1つのセルになります:red; blue。
  • オブジェクトのリスト(例:[{"a": 1}, {"a": 2}])は列に展開できないので、コンパクトなJSONテキストのまま1つのセルに保持されます。データは失われません — ただ表に展開されないだけです。
  • 空の配列と空のオブジェクトは、黙って消えるのではなく [] と {} になるので、「空」と「欠損」を区別できます。
CSV output
orderId,customer.name,customer.contact.email,customer.contact.phone,shipping.address,shipping.city,shipping.state,shipping.zip,pricing.subtotal,pricing.tax,pricing.total,status
ORD-9821,Alex Rivera,alex.r@techcorp.com,+1-555-0192,742 Evergreen Terrace,Springfield,OR,97477,249.99,21.25,271.24,shipped

すべてのネストされた値が列を見つけ、何も失われませんでした。フラット化のルールで知っておきたい点が2つあり、どちらもリストに関係します。

変換で変わる点(と変わらない点)

変換は忠実ですが、透明ではありません。JSONがCSVになるとき、正確に何が変わるかを示します。

  • 型はテキストになります。42、true、"2026-10-06" はすべて文字としてCSVに入ります。表計算ソフトは取り込み時に数値や日付を再判定するのが普通ですが、CSV自体に型情報はありません。07477 のような郵便番号は、表計算ソフトが「数値」と推測すると先頭の0が消えます。大事な場合は取り込み時に列をテキスト形式にしてください。
  • null は空セルになります。キーが欠けている場合も同じです。100件中1件のオブジェクトにメールアドレスがなくても、その行のメール列が空白になるだけです。
  • キーの順序が列の順序になります。JSONのオブジェクトは仕様上順序を持ちません。コンバーターは最初に見つけた順序を使うので、列はデータ中でキーが最初に現れた順に並びます。
  • エンコーディングはUTF-8のままです。アクセント付き文字がExcelで文字化けしたら、ファイルがUTF-8ではなくANSIとして読み込まれた証拠です。再インポートしてファイルの起点を 65001: UTF-8 に設定してください。
  • 区切り文字は変更可能です。デフォルトはカンマですが、お使いの地域のExcelがセミコロンを期待する場合は、取り込みで戦うのではなくセミコロン区切りでエクスポートしてください。

変わらない点:値そのもの、レコード数、そしてフラット化をオンにすればネスト構造全体(ドット付きの列に整理し直した形)です。1つだけ習慣にしたいのは、元のJSONを保管しておくことです。CSVは一方向の単純化であり、逆変換してもデータ型は戻りません。

JSONをCSVに無料で変換できますか?

できます — これは解決済みのコモディティ化した作業であり、お金を払う必要はありません。無料のオンラインコンバーターがよくあるケースを数秒で処理します。JSONを貼り付けるか .json ファイルをドロップして、CSVをダウンロードするだけです。このサイトのコンバーターは無料・登録不要で、ブラウザ内だけで動作し、ダウンロード前にフラット化・区切り文字・ヘッダーの切り替えができます。

無料のJSON→CSVコンバーターを開く

ファイルをどこにもアップロードせずに変換できますか?

できます — 機密データを扱うなら、そうすべきです。オンラインコンバーターには2種類あります。サーバーサイド型はファイルをアップロードし、他人のマシンで変換して、ダウンロードリンクを返します。クライアントサイド型は変換全体を自分のブラウザタブ内のJavaScriptで実行するので、データがデバイスから外に出ません。

このサイトのコンバーターは後者です。貼り付けやドロップしたファイルは自分のマシン上でローカルにCSV化されます。(ネットワーク通信が発生するのは、貼り付けたURLからJSONを取得するよう明示的に指示したときだけです。)経験則として、JSONにAPIキー、顧客のメールアドレス、見知らぬ人にメールで送りたくない内容が含まれる場合は、クライアントサイドのコンバーター、エディタ、ローカルスクリプトを使いましょう。アップロードしてから変換するツールは避けてください。

ツールがどちらかを見分けるには?開いてデータを貼り付け、変換中にブラウザのネットワークタブを眺めます。もっと簡単なのは、ページ読み込み後にネットワークを切断することです。クライアントサイドのコンバーターはオフラインでも動き続けます。

ExcelやGoogleスプレッドシートで変換できますか?

Excelは標準機能で変換できます。最終目的地が表計算ソフトなら、それが最良の選択肢です。「データ」→「データの取得」→「ファイルから」→「JSONから」と進み、ファイルを選択します。Power Queryがレコードをテーブルとして表示するので、列ヘッダーの展開アイコンでネストされた列を展開し、「閉じて読み込む」でCSVとして保存します。ネストされたデータはドット記法ではなく視覚的に処理できるので、好む人もいます。

GoogleスプレッドシートはJSONを標準でインポートできません — .json ファイル用の「ファイル」「インポート」オプションがありません。現実的な選択肢は、無料ツールで先にCSVに変換してから「ファイル」「インポート」するか、JSONを取得してパースする小さなApps Scriptを書くことです。ほとんどの人には、先に変換する方がスクリプトを書くより速いでしょう。

Excel特有の落とし穴を1つ。すべてが1列に固まってしまったら、お使いのExcelが区切り文字にセミコロンを期待している可能性が高いです(ヨーロッパのロケールで多い)。インポートウィザードと格闘するのではなく、セミコロン区切りでCSVを再エクスポートしてください。

コードで変換できますか?

同じ形のJSONを定期的に変換するなら — 日次エクスポート、ビルド手順、データパイプライン — 毎回ツールをクリックするより短いPythonスクリプトが勝ちます。データチームが手を伸ばす定番スニペットがこちらです。ネストされたオブジェクトをドット記法の列にフラット化し、ExcelがUTF-8エンコーディングを自動検出できるようBOMを書き込みます。

Python
import pandas as pd

# Flat or list-of-objects JSON
df = pd.read_json("data.json")

# Nested objects? Flatten them to dot-notation columns first
df = pd.json_normalize(df.to_dict("records"))

# utf-8-sig adds a BOM so Excel detects the encoding correctly
df.to_csv("data.csv", index=False, encoding="utf-8-sig")

使い捨てのターミナル作業なら、jq がPythonなしで変換します。次のコマンドは data.json を読み、各オブジェクトから2つのフィールドを取り出し、CSV行をそのまま標準出力に出します。すでにパイプで回しているログやAPIレスポンスに便利です。

ワンライナーのターミナル代替案

次のjqコマンドはこのマシンでテスト済みです。オブジェクトの配列を受け取り、各オブジェクトの tags を "; " で結合し、クォート処理済みの正しいCSVを出力します。

Terminal
$ echo '[{"name":"Ana","tags":["x","y"]}]' | jq -r '.[] | [.name, (.tags|join("; "))] | @csv'
"Ana","x; y"

実際に働いているのは @csv フィルタです。クォートが必要なフィールドをクォートし、埋め込まれたクォートをRFC 4180に従ってエスケープします。エッジケースを意識する必要はありません。

非常に大きなJSONファイルはどうですか?

変換できますが、ブラウザのタブでは無理です。ブラウザ型コンバーターが快適に扱えるのは数MBまでで、それを超えると文書全体が一度にメモリに載るため、タブが重くなったり固まったりします。大きなファイルはローカルで変換しましょう。

  • pandas を使ったPythonは、普通のノートPCで数百MBをストリーミング処理します。上のスニペットがそのまま使えます。
  • jq はJSONをストリームとして処理するので、単純なフィールド抽出ならファイル全体をメモリに載せる必要がありません。
  • 本当に巨大なファイル(GB級)なら、先に入力を分割します。1行1オブジェクトのJSONは1行ずつ処理できます。あるいはSQLiteやDuckDBに読み込んで、そこからCSVをエクスポートします。

サイズにかかわらず、変換前にJSONを検証してください。コンバーターは不正なJSONを即座に拒否します。2GBのファイルで構文エラーを探すのは、試行錯誤よりストリーミング検証ツールの方がはるかに楽です。

どの方法を選ぶべきか?

上のどの方法も、同じ入力からは同じCSVを生成します。違うのは手軽さ、プライバシー、規模です。自分の状況に合う行を見つけてください。

  • 使い捨てのファイル、数MB以下:無料のオンラインコンバーター。圧倒的に最速です。
  • 機密データ:クライアントサイドのコンバーターかローカルスクリプトで、何もアップロードしません。
  • 同じ変換を定期的に:再実行・バージョン管理できるPythonスクリプト。
  • 巨大なファイル:ローカルツール — Python、jq、DuckDB — ブラウザのタブは使いません。
  • 表計算ソフトが最終目的地:仲介を省いてExcelのPower Query。

タイトルの問いへの答えだけが必要だった場合:はい、JSONはCSVに変換できます。上の表から自分の行を見つければ、数分で終わります。

関連ガイド

よくある質問

どんなJSONファイルでもCSVに変換できますか?

ほぼ可能です。行と列に表せるJSONはきれいに変換でき、ネストされた構造は先にドット記法の列にフラット化されます。扱いにくいのは、レコード構造がまったくない文書 — 配列を含まない深くネストされた単一オブジェクトなど — ですが、それも変換自体はできて、横に広いまばらな表になります。実用はできますが、見た目はよくありません。

JSONをCSVに変換するとデータは失われますか?

値は残りますが、型は残りません。数値・真偽値・日付はプレーンテキストに、nullは空セルに、ネストはフラット化された列に整理し直されます。良いコンバーターは何も黙って捨てません。ただし元のJSONファイルは保管しておきましょう。CSVを逆変換しても元のデータ型は戻りません。

何もインストールせずにJSONをCSVに変換できますか?

できます。無料のオンラインコンバーターなら、インストールも登録も不要でブラウザ内で変換できます。JSONを貼り付けてCSVをダウンロードするだけです。Excelがあれば「データ」→「データの取得」→「JSONから」で追加ソフトなしに標準変換できます。

オンラインコンバーターにJSONを貼り付けるのは安全ですか?

変換がどこで起きるかによります。このサイトのようなクライアントサイドのコンバーターは、すべてブラウザタブ内で実行されるので、データがデバイスから外に出ません。機密ファイルでも安全です。一方、ファイルを先にサーバーへアップロードするツールは避けましょう。個人情報や秘密情報を含む場合は特にです。

変換したCSVがExcelで壊れて見えるのはなぜですか?

犯人はたいてい2つ:エンコーディングと区切り文字です。アクセント付き文字が文字化けしたら、ファイルがUTF-8ではなくANSIとして読み込まれた証拠です。再インポートしてファイルの起点を 65001: UTF-8 に設定してください。すべてが1列に入ってしまったら、お使いのExcelがセミコロンを期待しています(ヨーロッパのロケールで多い) — セミコロン区切りで再エクスポートしてください。

CSVを後からJSONに戻せますか?

はい。CSV→JSONは逆方向の旅で、同じくらい簡単です。確実な3つの方法はガイド「CSVをJSONに変換する方法」で解説しています。1つ注意点:元とまったく同じにはなりません。フラット化されたドット記法の列は、展開し直さない限りフラットのままですし、すべての値が文字列として戻ってきます。

JSONをCSVに変換するのにどれくらい時間がかかりますか?

通常のファイルならミリ秒単位です。貼り付けて、ダウンロードして、終わりです。時間が問題になるのは数百MB級の非常に大きなファイルだけで、ブラウザのタブでは苦しくなります。そこはローカルスクリプトが速くて安全な選択肢です。

JSONを変換する準備はできましたか?

JSONを貼り付けるだけで、表計算ソフト向けのクリーンなCSVを数秒でダウンロードできます。無料・プライバシー重視・登録不要。

JSON→CSVコンバーターを開く
ガイド一覧