JSON → CSV コンバーター
JSONオブジェクト配列を即座にCSVに変換。ネストオブジェクトのフラット化(ドットパス)、カスタム区切り文字、RFC 4180準拠エスケープ対応。ブラウザ内で処理。
- ブラウザ内で処理
- データはブラウザ外に出ません
- 無料 · 登録不要
WeChat でスキャンしてシェア
例・詳しい説明・よくある質問 実際の出力つきの例、ほかのツールとの違い、よくある質問。
例
基本的な変換
入力JSON:
[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]
出力CSV:
id,name
1,Alice
2,Bob
ネストオブジェクトの展開
入力JSON:
[{"user":{"name":"Alice","age":30}}]
出力CSV(展開オン):
user.name,user.age
Alice,30
郵便番号検索 API の結果を表にする
zipcloud の郵便番号検索API は、日本郵便の郵便番号データを検索して JSON で返します。レスポンスは message・results・status を持つオブジェクトなので、そのまま貼り付けると「入力はオブジェクトの JSON 配列である必要があります」と表示されます。表にしたいのは results の配列だけです。ドキュメントのレスポンスサンプルにある 2 件を貼り付けると、次のようになります。
[{"address1":"北海道","address2":"美唄市","address3":"上美唄町協和","kana1":"ホッカイドウ","kana2":"ビバイシ","kana3":"カミビバイチョウキョウワ","prefcode":"1","zipcode":"0790177"},
{"address1":"北海道","address2":"美唄市","address3":"上美唄町南","kana1":"ホッカイドウ","kana2":"ビバイシ","kana3":"カミビバイチョウミナミ","prefcode":"1","zipcode":"0790177"}]
出力CSV:
address1,address2,address3,kana1,kana2,kana3,prefcode,zipcode
北海道,美唄市,上美唄町協和,ホッカイドウ,ビバイシ,カミビバイチョウキョウワ,1,0790177
北海道,美唄市,上美唄町南,ホッカイドウ,ビバイシ,カミビバイチョウミナミ,1,0790177
カナは API が返す半角カナのまま書き出され、全角への変換はしません。郵便番号 0790177 も JSON の文字列どおりに先頭の 0 が残ります。注意が必要なのは Excel で開くときです。Microsoft のサポートページ
先頭のゼロおよび大きい数値の保持
によると、Excel は先頭のゼロを自動的に削除し、有効桁数は最大 15 桁です。そのままダブルクリックで開くと zipcode 列が 790177 になります。0 を残すには、同じページの手順どおり[データ]タブの[テキスト/CSV から]で読み込み、クエリ エディターでその列のデータ型を[テキスト]に変えてください。
全角の記号で始まる値
IME で入力したメモには、全角の - や + で始まる値が混ざることがあります。ツールは半角の = + - @ に加えて全角の = + - @ で始まる文字列も数えます。「その他の CSV 設定」で数式対策を「’ を付ける」にした場合:
[{"商品":"マグカップ","メモ":"-30%(セール)"},{"商品":"タンブラー","メモ":"在庫あり"}]
出力CSV:
商品,メモ
マグカップ,"'-30%(セール)"
タンブラー,在庫あり
ステータス欄には 2 行を変換しました · 1 個の値に数式対策を付けました。 と表示されます。数式対策がオフのままなら値は変わらず、該当する値の数だけが警告として表示されます。
RFC 4180 準拠
このツールはRFC 4180 CSV標準に従います。区切り文字・ダブルクォート・改行を含むフィールドはダブルクォートで囲まれ、フィールド内のダブルクォートは""にエスケープされます。行区切りは RFC 4180 の CR LF ではなく LF です(Excel・LibreOffice・pandas はどちらも読めます)。
数式対策
=、+、-、@、タブ、改行で始まるセルは、表計算ソフトで開いたときに数式として実行されるおそれがあります(OWASP: CSV Injection)。全角の = などにも反応します。ツールはこうした文字列の値を数えてステータス欄に表示します。数式対策をオンにすると、OWASP の推奨どおり前置文字を付けて引用符で囲みます。’ を付ける は ‘、タブを付ける(Excel) はタブを付けます(OWASP によれば、Excel で保存して開き直してもタブは残ります)。入力:
[{"name":"Ann","comment":"=HYPERLINK(\"http://example.com\",\"Click\")"}]
「’ を付ける」の出力:
name,comment
Ann,"'=HYPERLINK(""http://example.com"",""Click"")"
対象は JSON の文字列だけで、-5 などの数値、真偽値、JSON テキストとして書かれる配列・オブジェクトは変わりません。電話番号 +81 3 1234 5678 のような値にも前置文字が付き、データが変わるため、既定ではオフです。該当する値があるとステータス欄に表示されます。
Excel と BOM
ダウンロードしたファイルは既定で UTF-8 の BOM(バイト EF BB BF)で始まります。Microsoft のサポートページ Opening CSV UTF-8 files correctly in Excel は、BOM 付きで保存された UTF-8 の CSV はそのまま開けると説明しています。BOM がないと、Windows 版 Excel はダブルクリックで開いた CSV をシステムのコードページ(日本語環境では Shift_JIS(CP932))で読み、日本語が文字化けします。BOM を想定しないプログラムは BOM を最初の列名の一部として読むことがあります(Python で encoding=“utf-8” なら \ufeffid、“utf-8-sig” なら取り除かれます)。その場合は「ダウンロードに UTF-8 BOM を付ける」をオフにしてください。コピーした内容には BOM は付きません。
制限
- 入力は JSON の配列に限ります。オブジェクトを 1 つだけ貼ると「入力はオブジェクトの JSON 配列である必要があります」と表示されるので、
[ ]で囲んでください。[1,“two”,null]のようにオブジェクトでない要素は、1 つのvalue列に入ります。 - 空のネストオブジェクトと配列は展開しません。
"meta":{}はmeta列になり、値は{}です。[“a”,“b”]のような配列は JSON テキストとして 1 列に入ります。 - 253 を超える整数は JSON の解析時に精度が落ちます。
12345678901234567890は12345678901234567000として書き出されます。長い ID は JSON 側で文字列にしてください。 - 文字コードの変換はしません。Shift_JIS の CSV が必要な場合は、ダウンロード後に別のツールで変換してください。
- 行区切りは LF です。CR LF が必要なプログラムでは変換が必要です。
- 変換は JSON から CSV への一方向です。逆方向は CSV → JSON 変換ツール を使ってください。
FAQ
どのようなJSON形式に対応していますか?
オブジェクトのJSON配列(例:[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}])を受け付けます。各オブジェクトがCSVの1行になります。
ネストオブジェクトの展開はどのように機能しますか?
「ネストオブジェクトを展開」をオンにすると、address.cityのようなフィールドがaddress.cityという列名で独立した列になります。オフにすると、ネストオブジェクト全体がJSON文字列として1つの列に収まります。
行ごとにキーが異なる場合はどうなりますか?
全行のキーの和集合をヘッダーとして使用します。特定の行に存在しないフィールドは空文字列として出力されます。
特殊文字はどのように処理されますか?
区切り文字・ダブルクォート・改行を含むフィールドはRFC 4180に従い自動的にダブルクォートで囲まれます。フィールド内のダブルクォートは""にエスケープされます。
Excel で開くと文字化けするのはなぜですか?
Windows 版 Excel は、ダブルクリックで開いた CSV がバイト順マーク(BOM)で始まっている場合だけ UTF-8 として読み、それ以外はシステムのコードページ(日本語環境では Shift_JIS(CP932))で読むため、日本語が化けます。ダウンロードしたファイルには既定で BOM が付きます。この設定をオフにした場合は、[データ]タブの[テキスト/CSV から]で読み込み、文字コードに UTF-8 を選んでください。
データはサーバーに送信されますか?
いいえ。CSV はブラウザーのタブの中で作成し、入力した JSON をサーバーへ送ったり、ブラウザーのストレージに保存したりしません。入力欄の編集を終えたとき、設定を変えたとき、サンプルを読み込んだときに、ページのアクセス解析が利用イベント(ツール名と convert という操作名)を 1 件記録するだけで、JSON や CSV の内容は含みません。