このページの働き
このページは、アップロードされたJSONファイルをExcelのXLSX形式(.xlsx)に変換します。変換時には、JSONの階層構造(オブジェクトや配列の入れ子)を自動的に平坦化(フラット化)し、1枚のワークシートとして出力します。オブジェクトのキーは列ヘッダーに、オブジェクトの配列は行になります。入れ子になったキーはドットパス(例:address.city)で展開されます。変換後はブラウザ上でプレビュー表示され、そのままXLSXファイルとしてダウンロードできます。
他ページとの違い:なぜこの変換が必要か
JSONは型情報を持ち、階層を自由にネストできます。オブジェクト、配列、数値、真偽値、nullといったデータ型を内包し、キーと値の関係で複雑な構造を表現できます。一方、スプレッドシートは本質的にフラットな二次元の表です。この構造的な違いを埋めるため、JSON to Excel変換では平坦化ルールが必須になります。
具体的には、以下の点がCSVや既存のExcelファイルからの変換と異なります。
- ドットパス展開: ネストしたオブジェクトは
parent.child形式の列名として展開されます。例えば{"user": {"name": "田中", "age": 30}}はuser.name、user.ageという2列になります。 - データ型の保持: 出力先のXLSXは数値や真偽値をネイティブに保存できます。同じデータをCSVで書き出すとすべてが文字列になりますが、このツールでは元の型を可能な限り保持します。ただし、数式やセル書式は一切保存されません。出力されるのはJSONの静的な値だけです。
- 配列の配列の扱い: JSONが
[["a", 1], ["b", 2]]のような配列の配列であれば、そのままそのまま行としてテーブルに変換されます。列数は最初の配列の要素数に合わせられます。
入力と出力の仕様
入力ファイル: 1回につき1つのJSONファイル。ファイルは「テーブル形状」である必要があります。具体的には、オブジェクトの配列([{...}, {...}])か、配列の配列([[...], [...]])でなければなりません。単一のオブジェクトやスカラー値だけのJSONは変換できません。
出力ファイル: XLSX形式。ワークシートは1枚のみ。出力ファイルのサイズと行数・列数はプレビューに表示されます。
制限: ファイルサイズ、行数、列数には上限が設定されています。上限を超えると以下のエラーメッセージが表示されます。
- 「This file is too large. Use a file under ‹max›.」
- 「This table has more than ‹max› rows.」
- 「This table has more than ‹max› columns.」
変換のルールとエッジケース
変換はブラウザ上(クライアントサイド)で完結し、ファイルはサーバーに送信されません。以下のルールが適用されます。
- 平坦化の優先順位: オブジェクトの配列の場合、最優先でキーが列名になる。配列の配列の場合はそのまま表の行として扱われる。両方が混在する場合の動作は保証されていません。JSONが「テーブル形状」でない場合はエラーになります。
- nullと空の値: オブジェクト内のキーが
nullだった場合、該当セルは空欄になります。キー自体が存在しない場合は、その行のセルは空欄になります。 - エラーメッセージ一覧:
- 「Choose one file first.」(ファイル未選択)
- 「Choose a CSV, JSON or XLSX file.」(対応形式以外)
- 「This file is too large. Use a file under ‹max›.」(サイズ超過)
- 「This JSON is invalid or not table‑shaped.」(JSONが無効またはテーブル形状でない)
- 「This file has no table rows.」(行がゼロ)
- 「This table has more than ‹max› rows.」(行数超過)
- 「This table has more than ‹max› columns.」(列数超過)
- 「Conversion cancelled.」(変換中止)
- 「This conversion is taking too long. Try a smaller file.」(処理時間超過)
- 処理時間がかかる場合: 自動的にキャンセルされます。その場合はファイルサイズを小さくして再試行します。
想定ユーザーと利用シナリオ
- APIレスポンスの分析: REST APIから返ってくるJSONデータ(ユーザー情報、商品リストなど)を、Excelでフィルタや集計を行いたいデータアナリスト。
- 設定ファイルの共有: 設定ファイルやログデータがJSON形式で提供され、Excelを使うチームメンバーと共有したい場合。
- データ型を守りたい: 数値や真偽値を正確にXLSXに移したい場合。CSVに変換するとすべて文字列になり、後で数値変換が必要になる問題を避けられます。
- コードを書かずに平坦化: ネストしたJSONを、PythonやJavaScriptのスクリプトを書かずにスプレッドシートに変換したい人。ツールが自動でドットパスを生成します。
技術的補足
**JSON(JavaScript Object Notation)**は、軽量なデータ交換フォーマットです。キーバリューペアと配列で構成され、文字列・数値・真偽値・null・オブジェクト・配列の6種類の値を持ちます。ネスト構造が可能なため、リレーショナルデータベースのテーブルよりも柔軟に情報を格納できますが、そのままではExcelに読み込めません。
**XLSX(Office Open XML Spreadsheet)**は、ZIP圧縮されたXMLファイル群からなるスプレッドシート形式です。各セルにデータ型(数値、文字列、真偽値、エラーなど)を明示的に指定できます。このツールでは数値と真偽値をその型のまま埋め込み、文字列は文字列型として保存します。数式やセルの塗りつぶし、フォント設定などの書式情報は書き出されません。あくまでJSONのデータ構造をそのまま表に変換するのが目的です。
クライアントサイド処理により、ファイルの内容が外部サーバーに送られることはありません。変換ロジックはJavaScriptで実装され、ブラウザのメモリ上で動作します。プライバシーが重要なデータ(顧客情報、社内データ)でも安心して使用できます。
よくある質問
Q: ネストが3階層以上のJSONでも変換できますか?
A: はい。ドットパスが階層分だけ連結されます(例:company.address.zipcode)。ただし列数が増えるため、上限に達するとエラーになります。
Q: JSONに配列が含まれているとどうなりますか?
A: 最上位がオブジェクトの配列(行データとみなせる)であれば、配列内部の値はそのまま値として埋められます。配列全体が一つのセルに入ることはなく、ツールは自動的に平坦化します。ただし、ネストした配列をさらに行として展開することはありません。
Q: 変換後、Excelで開くと数式が使えますか?
A: 出力ファイルには数式データは含まれません。変換後のセルの値はJSONから直接書き込まれた静的な値です。Excel上で新たに数式を入力することは可能です。
Q: ファイルサイズの上限はどのくらいですか?
A: 具体的な数値は環境やブラウザのメモリ制限により異なります。表示されるエラーメッセージ「Use a file under ‹max›.」で上限を確認できます。大きなファイルは分割してから変換してください。
Q: 変換が途中で止まった場合はどうすればいいですか?
A: 自動でキャンセルされた場合、「This conversion is taking too long. Try a smaller file.」と表示されます。ファイルを分割するか、フィールドを減らして試してください。変換中にブラウザを閉じると強制終了になります。
Q: データはサーバーにアップロードされますか?
A: いいえ。変換はすべてブラウザのJavaScriptで行われ、ファイルがサーバーに送信されることはありません。プライバシーが保たれます。