Json To Csv LogoJson To Csv

JSONからCSVを作る方法:生データを正しく使えるファイルに変える7つの判断(2026年ガイド)

CSVを作ることは、単に変換することではありません。列は契約であり、区切り文字は意図的な選択であり、引用符は触らなければ自動です。生のJSONを、どこで開いても正しく動くファイルに変える7つの判断を解説します。

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

作ることと変換することは別物

「CSVを作る」と「JSONをCSVに変換する」は、同じ意味のように使われがちです。しかし実際は違います。変換は機械的な作業であり、同じJSONからは同じ設定で常に同じCSVが生まれます。一方、作ることは作者としての仕事です。同僚に渡すファイル、データベースに取り込むファイル、分析ツールに読み込ませるファイルは、自分がコントロールできない環境で生き残らなければなりません。海外のExcel、厳密なルールを持つデータベースローダー、すべてをダブルクリックで開く同僚——そうした環境です。

「変換された」と「作られた」の間には7つの判断があります。これらを飛ばしてもファイルは変換されます。ただ、下流のどこかで、最悪のタイミングで壊れるだけです。朗報です。各判断は数秒で済み、何を決めるのかを理解すれば、以後は無意識に目が行くようになります。以下の例はすべて、このサイトの実際の変換エンジン——「変換」ボタンを押したときに動くものと同じJavaScript——で実行しています。つまり、ここに示す出力は、実際に得られるものそのものです。

判断1:グリッドを作り込む前にツリーをフラット化する

ネストしたJSONから列を作り込むことはできません。CSVはグリッドです——行と列があり、すべてのセルは1つのフラットな値です。ネストしたオブジェクトには、住める列がありません。だから最初の判断はフラット化です。ネストしたオブジェクトはドット記法の列になります(customerはcustomer.nameとcustomer.cityに)、単純な値のリストは1つのセルに結合され、nullは空のセルになります。これは機械的なステップであり、このコンバーターのフラット化トグルが代わりにやってくれる部分です。

なぜ最初に行うのか。後のすべての判断——ヘッダー名、区切り文字、引用符——は、フラット化後の結果に対して行われるからです。フラット化の前にヘッダーを改名しても、まだ存在しない列に名前を付けていることになります。このエンジンはflattenNestedというオプション名でデフォルトでフラット化します。つまり実務上の判断はこうなります。そのままオンにしておき、プレビューを一瞥して、列名が期待通りか確認する。それだけです。

判断2:列名は契約書のように付ける

ヘッダー行の名前は、そのファイルを触るすべてのツールとの契約です。悪いヘッダー名は、最も静かにCSVを壊します。変換時には失敗せず、3週間後のデータベース取り込みで失敗するからです。次の4つのルールでほぼすべてをカバーできます。

  • ヘッダー名にスペースを入れない。「order id」は人には読みやすく、SQLローダーにはバグ報告の材料です。orderIdかorder_idを使いましょう。フラット化エンジンは既にスペースのないドット記法の名前(customer.name)を生成するので、気にすべきはトップレベルのキーだけです。
  • 重複した名前を使わない。2つの同一ヘッダーがあると、多くのインポーターで2列目が1列目を黙って上書きします。JSONに「user.name」というリテラルキーと、ネストしたuser: { name }の両方がある場合、フラット化で1つの列に統合され、ネスト側の値が勝ち、もう一方は失われます。両方の値が大切なら、変換前に改名してください。
  • 数字で始めない。「2024-sales」のような列名は、多くのSQL方言や一部のBIツールで壊れます。sales_2024を選びましょう。
  • 安定していて、省略しすぎない。ヘッダーはAPIです。「qty」のような略語は許容範囲ですが、「q」では半年後の誰かが困ります。一度フルワードで決めたら、ファイル間で使い回しましょう。

恐れなくていいものが1つあります。非ASCIIのヘッダー名です。product_nameのような列名と「商品名」のような日本語ラベルが混在しても、UTF-8なら問題なく運べます(判断6でエンコーディングを扱います)。エンジンはヘッダーのセルにもデータセルと同じ引用符ルールを適用するので、カンマや引用符を含むヘッダーでも正しくエスケープされます。ソースコードでエスケープ処理を確認済みです。引用符付けはセル単位で、ヘッダーも対象です。

判断3:区切り文字は意図を持って選ぶ

カンマはデフォルトの区切り文字であり、ほとんどのファイルではそれが正解です。ただし区切り文字は形式上のものではありません。ファイル全体を解析する文字です。このコンバーターはカンマ、セミコロン、タブ、パイプ、カスタムを提供しており、それぞれが活躍する場面は次の通りです。

  • カンマ:デフォルトです。理由がなければこれを使いましょう。すべてのツールが読めます。
  • セミコロン:データがカンマだらけのとき。ヨーロッパのエクスポートで多用されるのには理由があり、多くのヨーロッパのロケールではカンマが小数点の区切り文字なので、カンマ区切りのファイルは曖昧になってしまいます。テキストフィールドがカンマだらけなら、セミコロンで引用符に頼らずにセルを読みやすく保てます。
  • タブ:生のファイルを人間が読むとき。タブ区切りの値はスプレッドシートにそのまま貼り付けられ、テキストエディタでも読みやすいままです。コピー&ペースト中心のワークフローに便利です。
  • パイプ:テキストにカンマも引用符もセミコロンも含まれるとき——ログメッセージ、住所、文章など。パイプは自然な文章の中では稀なので、衝突しにくい文字です。

正直な注意点があります。引用符は、まさに区切り文字の選択を成立させるために存在します。セルが区切り文字を含む場合、エンジンは自動的に引用符で包みます(判断4)。だからカンマだらけの住所でも、カンマ区切りのファイルで正しく解析されます。区切り文字の選択は、読みやすさと受け手の習慣の問題であり、正しさの問題ではありません。正しさは引用符エンジンの仕事です。ただし、1つだけ現実的な警告があります。米国や英国の受け手向けにセミコロンを選ぶなら、伝えてください。彼らのExcelはデフォルトでカンマを期待し、ファイルが1つの長い列として開かれることがあります。

判断4:引用符は自動設定のままにする

引用符はCSVで最も誤解されている部分です。ルールはシンプルです。区切り文字、引用符文字、改行のいずれかを含むセルはダブルクォートで包まなければならず、内側の引用符は2重にしなければなりません。エンジンが実際に生成するものは次の通りです——検証済みで、イメージ図ではありません。

実際の引用符付け(本物のエンジンで検証済み)
name,city,qty
"Say ""hi"", friend",Oslo,3

よく読んでください。Say "hi", friendというセルは"Say ""hi"", friend"になりました。カンマを含むため引用符で包まれ、内側の引用符は2重になりました。これが正しい、標準準拠の出力であり、本物の表計算ソフトはすべて、これを元のテキストに正確に戻して解析します。

判断4:引用符は自動設定のままにする(続き)

区切り文字をセミコロンに変えると、引用符付けがどう適応するか見てみましょう。

同じデータをセミコロン区切りで(検証済み)
name;city;qty
"Say ""hi"", friend";Oslo;3

カンマはもう包むきっかけになりませんが、引用符文字は依然として包むきっかけになります。エンジンは「何が特殊か」という固定観念ではなく、実際に使われている区切り文字に応じて引用符を付けます。この区切り文字ごとの配慮こそが「自動」の意味であり、触らずにおくべき設定です。エンジンはalways(常に)とnever(なし)の引用符モードも提供しています。neverは危険であり、その証拠がこちらです。

判断4:引用符は自動設定のままにする(続き)

quoteMode "never"——危険な設定(検証済み)
note,code
line1
line2,007

引用符を無効にすると、実際の改行を含むセルが生のまま残ります。そしてその改行は、地球上のすべてのパーサーに行の境界に見えます。2行のファイルが3行として読まれ、そのうち1行はゴミになります。引用符の2重化は無条件で行われるので(エンジンが必ずやります)、包まれないだけです。「never」は、下流のシステムが引用符なしの出力を明示的に要求し、かつセルに区切り文字・引用符・改行が一切含まれないことを確認した場合にのみ使ってください。それ以外のすべての場合:自動です。

判断5:値は見せたい通りのテキストにする

JSONには型があります——数値、真偽値、null。CSVの型は1つだけです。テキストです。変換の瞬間に、すべての値が最終的なテキスト形式になります。そしてこれは、ほとんどの人が意識せずに済ませてしまう判断です。注意すべき値の形が3つあります。

1つ目は先行ゼロです。「007」のようなJSON文字列は、CSVでも007のままです——検証済みで、引用符なし、入力通りそのままです。ただし、そのファイルをExcelで開くと7と表示されるでしょう。Excelが開くときにセルを再解釈するからです。CSVは正しく、ビューアが思い込みが激しいのです。先行ゼロをExcelでも生かしたいなら、修正すべきは受け手側(テキストとしてインポート)であり、ファイルではありません。コンバーターを責める前に、このことを知っておいてください。

2つ目は日付です。JSONに日付型はないので、「日付」は2026-10-14のような文字列か、1697000000のようなタイムスタンプです。変換した形が、そのままCSVに残る形になります。だからエクスポート前に、人に見せたい形を選んでください。ISO形式の2026-10-14はテキストとして正しくソートされます。10/14/2026はソートされず、世界の半分に誤読されます。この判断はJSONの段階で行い、CSVができてからでは遅いのです。

3つ目は小数と真偽値です。19.99000001のような数値は、そのままのテキストになります。真偽値はtrue/falseになります。ソースデータに浮動小数のノイズがあるなら、変換前に丸めてください。CSVは丸めてくれません。

判断6:UTF-8を意識して選ぶ——そしてBOMの問題を知る

エンコーディングは、文字化けに襲われるまで誰も決めない判断です。2026年の答えはUTF-8です。すべての言語を運べ、すべての現代的なツールが読めます。微妙なのはBOM——ファイルの先頭に付けたいと一部のWindowsツールが求める、目に見えないバイト順マークです。

このサイトのコンバーターについての正直な事実をお伝えします。ダウンロードはプレーンなUTF-8で、BOMは付きません——ダウンロードのコードを読みましたが、charset=utf-8のtext/csv Blobを生成し、先頭マークは付けていません。これはWebアップロード、データベース、Googleスプレッドシート、Pythonにとって正しい形です。唯一困るのは、一部のWindows版Excelでダブルクリックして開く場合で、エンコーディングを誤って推測し、非ASCII文字を化けさせることがあります。

修正は、コンバーターにBOMを要求することではありません。20秒のインポートです。Excelで「データ」→「テキスト/CSVから」→エンコーディングのドロップダウンで65001(UTF-8)を選んでください。文字は完璧に出てきて、ファイル自体は他のすべてのツールにとってクリーンなままです。エンコーディングはワークフローごとに一度決め、ファイルのそばに記録しておきましょう。エンコーディングのトラブルは、いつもコミュニケーションの失敗であり、データの失敗ではありません。

判断7:完成したファイルを手放す前に検証する

作り込むことの締めくくりはチェックであり、1分もかかりません。4つのステップです。

  • まずテキストエディタで開き、表計算ソフトでは開かない。テキストエディタはファイルそのものを見せ、表計算ソフトは解釈を見せます。ヘッダー行、区切り文字、引用符で包まれたセルが正気に見えるか確認しましょう。
  • 行数を数える。エンジンは統計情報に行数と列数を報告します——JSON配列の長さと比べてください。食い違いがあれば解析の驚きがあります(たいていはquoteMode "never"での無引用符の改行か、不正な入力JSONです)。
  • 再インポートする。CSVを貼り付け直すか、送り先のツールで開いてみましょう。そこで正しく開ければ、受け手の環境でも正しく開けます。
  • 端をチェックする。最初の行、最後の行、そして最も変な文字を含む行の1つ。破損は境界に集まります。

このチェックリストは、「なぜCSVが壊れて見えるのか」への答えでもあります。私たちの経験では、10回中9回はファイルではなくビューアかインポート設定の問題で、ファイル自体が原因なのは10回中1回です。テキストエディタで先に開く習慣こそ、両者を数秒で切り分けるものです。

60秒レシピ:7つの判断をすべて込めて

JSONをコンバーターに貼り付けるか、アップロードします。フラット化はオンのままにし、列のプレビューを一瞥しましょう——ドット記法の名前がそのままヘッダーになるので、問題のあるキーはソース側で先に改名します。テキストがカンマだらけでなければ区切り文字はカンマのまま(カンマだらけならセミコロン)。引用符は自動のまま。日付と数値は、変換前に見せたい通りのプレーンテキストに整えます。UTF-8でダウンロードし、テキストエディタで一度開き、送り先で再インポートします。完了——単に変換されたのではなく、作り込まれたファイルです。

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

関連ガイド

よくある質問

JSONからCSVファイルを作るにはどうすればいいですか?

JSONをコンバーターに貼り付けるかアップロードし、ネストしたデータを列へフラット化し、ヘッダー名と区切り文字を確認してからダウンロードします。フルチェックリストは次の通りです。先にフラット化、スペースなしの列名、カンマ区切りのまま(データがカンマだらけなら別)、引用符は自動のまま、日付と数値は見せたい通りのテキストに、UTF-8でダウンロード、そして再インポートして検証。これだけです。

JSONから作るCSVに最適な区切り文字は何ですか?

カンマがデフォルトであり、ほとんどのファイルで正解です。テキストフィールドがカンマだらけならセミコロン(ヨーロッパのエクスポートで一般的。カンマが小数点の区切り文字でもある地域です)、コピー&ペーストの読みやすさにはタブ、テキストにカンマ・引用符・セミコロンがすべて含まれるならパイプを使います。正しい引用符付けがあれば、どれも安全に解析されます——選択は受け手の習慣の問題であり、正しさの問題ではありません。

JSONから作るCSVの列名はどう付けるべきですか?

ヘッダー名は契約として扱いましょう。スペースなし(order_idであって「order id」ではない)、重複なし、数字で始めない(sales_2024であって2024-salesではない)、不可解な略語ではなくフルワード。フラット化されたネストキーは既にcustomer.nameのようなスペースなしのドット記法名になるので、通常はトップレベルのキーだけ気にすれば十分です。

JSONから作ったCSVがExcelで正しく開かないのはなぜですか?

10回中9回はファイルは正常で、ビューアが問題です。よくある原因は次の通りです。Excelが区切り文字を誤って推測する(セミコロンのファイルをカンマとして開く)、非ASCIIテキストのエンコーディングを誤って推測する(「データ」→「テキスト/CSVから」で65001 UTF-8を指定して再インポート)、Excelがセルを再解釈する(007のような先行ゼロを削る、日付を勝手に書式変更する)。まずテキストエディタで開きましょう——そこで正しく見えれば、ファイルは正しいのです。

CSVのすべてのセルを引用符で囲む必要がありますか?

いいえ。自動(必要に応じた)引用符付けが正しく、十分です。区切り文字・引用符・改行を含むセルだけがダブルクォートで包まれ、内側の引用符は2重になります。「常に」はノイズを増やし、「なし」は危険です。引用符なしのセル内の改行は、すべてのパーサーに行の境界に見え、行数を黙って壊します。

JSONから作るCSVにBOMは必要ですか?

通常は不要です。BOMなしのUTF-8ファイルはどこでも動きます。データベース、Webアップロード、Googleスプレッドシート、Python。一部のWindows版Excelはダブルクリック時にBOMなしファイルを誤読しますが、修正はBOMの追加ではなく正しいインポートです(「データ」→「テキスト/CSVから」、エンコーディング65001)。BOMは他のツールを混乱させることがあります。このサイトのコンバーターはBOMなしのプレーンなUTF-8でダウンロードします。

生成したCSVが正しいか確認するにはどうすればいいですか?

4つの簡単なステップです。テキストエディタで開く(表計算ソフトではなく)して実際のファイルを見る、行数をJSON配列の長さと比べる、送り先のツールに再インポートする、最初の行・最後の行・最も変な文字を含む行を調べる。破損は境界に集まります——端が正しければ、ファイルは正しいのです。

今すぐCSVを作りましょう——フラット化・引用符・ヘッダーはおまかせ

JSONを貼り付けるかファイルをアップロードしてください。ネストしたデータはきれいな列にフラット化され、区切り文字と引用符は自動で、ダウンロードはプレーンなUTF-8です。無料、登録不要、すべてブラウザ内で動作します。

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