データコンバーター · 5 分で読みました
JSON ~ CSV: 意味を失わずにネストされたデータを平坦化する
CSV は依然として、スプレッドシート、BI ツール、財務システム、レビュー担当者のラップトップなど、あらゆるもので開くことができる形式です。 JSON を CSV に変換するのは、主にネストされた部分をどうするかという問題です。テーブルにはレコードごとに 1 行があり、列は事前に固定されていますが、JSON は好きなだけネストできます。
更新されました
コラムの問題
2 つのルールにより、JSON から CSV への変換が予測可能になります。まず、列はすべてのレコードのすべてのキーの結合です。1 つのオブジェクトにのみ出現するキーでも列が取得され、他の場所は空になります。次に、すべての行が同じ順序で値を出力する必要があります。どちらかを間違えると、ファイルは正常に開きますが、キーが存在しない最初の行からは静かに位置がずれてしまいます。
ネストされたオブジェクトの平坦化
従来の手法はドット表記です。`city` と `postcode` を含む `address` は、 `address.city` と `address.postcode` になります。これにより、ヘッダーが長くなりますが、スプレッドシート内ですべての値が表示され、クエリ可能になります。深くネストされた構造では扱いにくい名前が生成される可能性があるため、データを制御するレベルを 1 つフラット化し、探索するときにツールを完全にフラット化します。
{"id": 7, "customer": {"name": "Ada", "plan": "pro"}}
→ id,customer.name,customer.plan
7,Ada,pro
配列: ひどく平坦化される部分
スカラーの配列はセパレータを使用して 1 つのセルに結合できます。これはタグには適しており、短いリストには許容されます。オブジェクトの配列 (たとえば、注文品目) は単一のセルに属しません。セルを結合すると、数量を合計することはできません。インデックスを `items.0.sku`、`items.1.sku` に設定すると、列は各注文にたまたま含まれていたアイテムの数によって異なります。このケースに該当すると、データにはキーでリンクされた 2 つの CSV ファイル (テーブルごとに 1 つ) が必要になります。
セルにカンマ、引用符、または改行が含まれる場合は、セルを引用符で囲み、内部の引用符を二重にする必要があります。生成された出力はこれを処理します。手動で編集した CSV は通常は処理しません。そのため、アドレスを含む行でインポートが断続的に失敗します。
ファイルを Excel で動作させる
Excel では、別途指示がない限りシステム エンコーディングが想定されるため、アクセント付き文字が破損する可能性があります。バイトオーダーマークを付けて UTF-8 を発行すると、これを回避できます。これがないと、Numbers や Sheets では完璧に見える同じファイルが Excel では文字化けして表示されます。長い数値識別子 (カード番号、大きな SKU) も引用する価値があるため、Excel はそれらを科学表記法に変換しません。
CSVが間違った出力の場合
コンシューマがプログラムの場合、CSV は型情報とネストを破棄して何のメリットもありません。JSON 行またはデータベースのロードの方が優れています。 CSV はスプレッドシートを使用する人間向けです: レポート、エクスポート、調整。習慣ではなく、意図的にそれを選択すれば、仕事の半分は完了します。 YamlBox JSON から CSV へのコンバータは完全にブラウザ内で実行されるため、顧客行を含むエクスポートがマシンから送信されることはありません。
JSON ~ CSV — よくある質問
JSON を CSV に変換する場合、ネストされたオブジェクトはどのように処理されますか?
デフォルトではドット表記で平坦化され、`customer.name` が独自の列になります。代わりに値をグループ化したままにすることもできますが、フラット化された列により、スプレッドシート内でファイルをフィルター処理したりピボットしたりできるようになります。
変換後に Excel でアクセント付き文字が正しく表示されないのはなぜですか?
Excel は、バイト オーダー マークに別の指示がない限り、ローカル システム エンコーディングを使用してファイルを読み取ります。 BOM を使用して UTF-8 をエクスポートすると、名前はそのまま残ります。これがないと、同じデータが Google スプレッドシートでは正しく表示されますが、Excel では正しく表示されません。
オブジェクトの配列を CSV に変換できますか?
列はすべてのレコードのキーの結合から得られるため、形状が混合されたオブジェクトの配列でも、キーが欠落している空白を含む有効なテーブルが生成されます。これらのオブジェクト内の配列は、2 番目のファイルに分割する必要がある場合です。
この投稿で言及されているツール
さらに読む記事
5 分で読みました
CSV から JSON: スプレッドシートから構造化データへ
ブラウザで CSV を JSON に変換します。ヘッダー行、区切り記号、引用符の規則、および型の処理について、パーサーを破壊するスプレッドシートのエクスポートを使用して説明します。
6 分で読みました
Excel を JSON に: ワークブックを構造化データに変換する
何もアップロードせずに、ブラウザーで Excel を XLSX ワークブックから JSON に変換します。ヘッダー、日付シリアル、数式、複数のシートが説明されています。
5 分で読みました
Markdown テーブル: パイプを数える代わりにテーブルを生成し
行またはスプレッドシートから GitHub 風味のマークダウン テーブルを構築します。整列、パイプのエスケープ、および README にテーブルが間違った選択である場合に使用します。