JSONをCSVに変換する方法
- JSONを貼り付けます。オブジェクトの配列、オブジェクト1つ、配列を含むAPIのレスポンス(
{"data": [ … ]}など)、1行に1つのオブジェクトが並んだJSON Linesに対応し、貼り付けた時点で変換されます。 - 区切り文字を選びます。日本のExcelやGoogleスプレッドシートならカンマのままでかまいません。
- 配列の書き方を選びます。1つのセルにJSONのまま入れる、カンマで値をつなぐ、要素ごとに列に分けるの3通りです。
- プレビューを確認して、ダウンロードで .csv ファイルを保存するか、コピーでCSVをほかの場所に貼り付けます。
変換のしくみ
CSVは平らな表、JSONは木の形なので、レコードごとに平らにします。
- 行の見つけ方:一番外側が配列なら、要素1つが1行になります。一番外側がオブジェクトなら、その中から最初に見つかったオブジェクトの配列を階層の浅い順に探し、使った場所を行を取り出した場所に
$.data.itemsのように表示します。そうした配列がなければ、オブジェクト全体を1行にします。 - 入れ子のオブジェクトはドットでつないだ列名になります。
{"customer": {"pref": "大阪府"}}はcustomer.prefという列になり、どんなに深くても同じです。 - 列は、すべてのレコードに出てくるキーを、最初に現れた順に並べたものです。キーのないレコードは空のセルになるので、項目の違うレコードもずれずに並びます。
- 値:文字列はそのまま、数値はJSONに書かれたとおり、
trueとfalseは文字として、nullは空のセルになります。 - 引用符:RFC 4180に従い、区切り文字、ダブルクォート、改行を含むセルはダブルクォートで囲み、中のダブルクォートは2つ重ねます。行末は規格とExcelが想定するCRLFです。
| 配列の書き方 | {"tags": ["赤", "青"]} の変換結果 |
|---|---|
| JSONのまま | tags ⏎ "[""赤"",""青""]" |
| 値をつなぐ | tags ⏎ "赤, 青" |
| 列に分ける | tags.0,tags.1 ⏎ 赤,青 |
JSONのままなら情報が失われず、あとでJSONに戻せます。値をつなぐとスプレッドシートで読みやすくなります。列に分ける方法は、同じ長さの短いリストに向いていて、オブジェクトの配列なら items.0.sku のような列になります。
計算例:注文データをCSVにする
入力欄のサンプルは、ネットショップのAPIのようなレスポンスで、orders の中に注文が2件あります。変換ツールはそれを $.orders で見つけ、7列のCSVを書き出します。
id,customer.name,customer.pref,total,paid,items,note 9007199254740993,山田 花子,東京都,12800,true,"[""文庫本"",""マグカップ""]", 9007199254740994,佐藤 健,北海道,3980,false,"[""ボールペン""]","午前中指定, 置き配可"
細かいところを見てみましょう。顧客のオブジェクトは customer.name と customer.pref の2列になりました。1件目の注文には note がないので、最後のセルは空です。2件目のメモには半角のカンマが入っているので、ダブルクォートで囲まれています。日本語の読点「、」なら区切り文字ではないので、囲む必要はありません。そして注文ID 9007199254740993 と 9007199254740994 は正確なままです。どちらも253を超えていて、JavaScriptの JSON.parse を使う多くの変換ツールでは1件目が …992 に丸められてしまいます。CSVのファイルサイズはBOMを含めて255バイトで、日本語はUTF-8で1文字3バイトです。
ExcelでCSVが文字化けする理由とBOM
日本語版WindowsのExcelは、CSVファイルをダブルクリックで開くと、特に指定がなければShift_JIS(Windowsのコードページ932)として読みます。今のWebやアプリが出力するCSVはほとんどがUTF-8なので、そのまま開くと「山田 花子」が「螻ア逕ー 闃ア蟄�」のように文字化けします。「縺」「繧」のような漢字が並んでいたら、UTF-8をShift_JISとして読んだ印です。
これを防ぐのがBOM(バイトオーダーマーク)です。ファイルの先頭に置く見えない3バイト(EF BB BF)で、Excelはこれを見てファイルをUTF-8として読みます。このツールは最初からBOMを付けているので、ダウンロードしたCSVをそのままExcelで開けます。BOMが邪魔になるのは、先頭の3バイトを最初の列名の一部として読んでしまうプログラム(古いスクリプトやインポート処理など)に渡す場合だけで、そのときはチェックを外してください。Googleスプレッドシートや Numbers はどちらでも正しく読みます。
- BOMなしのCSVを開くとき:Excelの「データ」タブ →「テキストまたはCSVから」でファイルを選び、「元のファイル」を「65001: Unicode (UTF-8)」にすれば文字化けせずに読み込めます。
- Excelで保存し直すとき:「CSV UTF-8(コンマ区切り)」を選ぶとBOM付きUTF-8、「CSV(コンマ区切り)」を選ぶとShift_JISで保存されます。受け取る側のシステムに合わせて選んでください。
- 区切り文字:Excelは、Windowsの地域設定の「リスト区切り文字」でCSVを分割します。小数点にピリオドを使う日本の設定ではこれがカンマなので、カンマ区切りのままで正しく列に分かれます。セミコロンは、小数点にカンマを使うドイツやフランスなど向けです。
Excelで気をつけたい値
- 先頭のゼロ:Excelは数字だけのセルを数値として扱うため、郵便番号「0600001」や電話番号「09012345678」の先頭の0が消えます。JSONで文字列になっていてもCSVには引用符の区別がないので同じです。こうした列は「テキストまたはCSVから」で読み込み、列のデータ型を「テキスト」にしてください。
- 桁の多い数値:CSVにはすべての桁が残りますが、Excelは有効数字15桁までしか保持しません。9007199254740993 は 9.0072E+15 と表示され、9007199254740990 として保存されます。注文番号やIDの列もテキストとして読み込みます。
- 日付に見える値:「1-2」や「10/16」のような値は、Excelが勝手に日付に変えることがあります。品番などは同じくテキストとして読み込みます。
- 数式:=、+、-、@ で始まるセルは、スプレッドシートで数式として実行されることがあります。外部から受け取ったJSONなら、Excelで開く前にそうしたセルを確認してください。
制限とヒント
- 数MBのファイルなら1秒ほどで変換できます。200,000文字を超える結果は、表示とコピーが重くなるのでダウンロードだけにしています。
- 正しくないJSONは、問題の内容と行・列を表示します。エラーの種類と直し方はJSON整形で詳しく確認できます。日本語入力のまま打った全角の「:」や「,」もエラーになります。
- レスポンスにレコードの配列が複数あるときは、使いたい配列だけを貼り付けるか、一番上に移してください。
- 処理はすべてブラウザの中で行われ、JSONもCSVも端末の外に出ません。保存もされないので、ページを再読み込みすると消えます。
よくある質問
データはアップロードされますか?
いいえ。変換はブラウザのJavaScriptで行い、ダウンロードするファイルも端末の中で作ります。顧客リストや社内データ、APIキーを含むJSONにも使え、ページを一度開けばオフラインでも動きます。
ExcelでCSVを開くと日本語が文字化けします。
日本語版のExcelがUTF-8のCSVをShift_JISとして読んでいるためです。UTF-8のBOMを付けるをオンのままダウンロードし直せば、ExcelがUTF-8と判断して正しく表示します。BOMのないファイルは「データ」→「テキストまたはCSVから」で文字コードにUTF-8を選んで開いてください。
Excelで全部が1列に入ってしまいます。
区切り文字が、Excelが想定しているものと違います。日本の設定のExcelはカンマで分割するので、カンマを選んでください。ヨーロッパの設定のExcelはセミコロンを想定します。タブ区切り(TSV)は「テキストまたはCSVから」で読み込めます。
入れ子になったJSONはどう変換されますか?
ドットでつないだ列名に展開されます。{"user": {"address": {"city": "横浜市"}}} は user.address.city という列になります。配列は、選んだ方法(JSONのまま、値をつなぐ、列に分ける)で書き出します。
JSON Lines(NDJSON)も変換できますか?
できます。ログやデータのエクスポートでよく使われる、1行に1つのJSONが並んだ形式をそのまま貼り付けてください。1行が1行のCSVになり、列はすべての行のキーを合わせたものになります。
最終更新日:2026年10月16日