CSVガイド
ネストしたJSONをCSVに変換する方法
JSONをCSVに変換するときは、どのデータを1行にし、入れ子の項目をどの列に分けるかを決めます。このガイドでは、2件のデータが入ったサンプルで設定と出力結果を確認します。
JSONをCSVに変換するサンプルで確認するJSONとCSVの対応
このサンプルでは、results 配列の各要素をCSVの1行に変換します。「配列のパス」に results を入力し、「入れ子のオブジェクトをドット区切りの列に展開」をオンにします。「レコード内の配列」は「JSONのまま保持」を選んでください。区切り文字をカンマにすると、次のCSV(見出し1行とデータ2行)になります。
{
"results": [
{
"id": "000184",
"customer": { "name": "Ada", "region": "US" },
"tags": ["analysis", "csv"]
},
{
"id": "000219",
"customer": { "name": "Grace", "region": "UK" },
"tags": ["data", "compiler"]
}
]
}
id,customer.name,customer.region,tags
000184,Ada,US,"[""analysis"",""csv""]"
000219,Grace,UK,"[""data"",""compiler""]"customer.name と customer.region は、それぞれ別の列になります。tags は配列全体を1つのセルに保存します。CSV内の連続した2つの引用符は、値に含まれる1つの引用符を表しています。配列の要素ごとに行が増えることはありません。
JSON全体を変換する場合は、「配列のパス」を空欄にします。オブジェクト全体なら1行に、配列全体なら要素ごとに1行になります。一部のデータだけを取り出す場合は、そのキーまでのパスを指定してください。results.items は、results の中に items というキーがある場合の指定です。実際のJSONにないパスを指定すると、読み込みエラーになります。
a.b というキーと、a の中にある b というキーは、展開後の列名がどちらも a.b になるため、そのままでは変換できません。元のJSONのキー名を変更するか、オブジェクトの展開をオフにしてください。展開をオフにすると、入れ子のオブジェクトはJSON文字列として1つのセルに入ります。キーがない場合、null、空文字は、いずれもCSVでは空欄になります。これらを区別する必要がある場合は、元のJSONも残してください。
手順
- CSVにしたいデータが、JSONのどこにあるか確認します。このサンプルでは results 配列の中にあります。
- 「配列のパス」に results を入力します。サンプルのように一部を選ぶのではなく、JSON全体を変換する場合は空欄にしてください。
- 「customer.name」のように列を分けるには、「入れ子のオブジェクトをドット区切りの列に展開」をオンにします。
- 「レコード内の配列」で「JSONのまま保持」を選び、列と値を確認してからCSVを保存します。
結果の確認
- 書き出された行数が、指定したJSON配列の要素数と一致するか確認します。
- 一部の項目がないレコードも確認し、空欄になっている列と隣の列の値が正しいか確かめます。
- 配列をJSON文字列として保存したセルは、CSVから取り出した後もJSONとして読み込めるか確認します。
注意点
- レコードごとに形が大きく異なるJSONを展開すると、空欄の多い列が大量に作られます。
- 配列をカンマで連結すると、要素自体にカンマやオブジェクトが含まれる場合に元の構造を戻せません。
- 空配列からは列名を推定できないため、結果は空の表になります。
このページでサンプルを試す
「サンプルを試す」を押すと、このガイドの架空のデータを読み込みます。設定を変えて結果を確認し、そのまま保存できます。自分のファイルもブラウザ内で処理できます。
ファイルを開いて始める
データは画面表示とは別に読み込みます。会員登録なしで、検索、並べ替え、チェック、修正、保存ができます。
元のサンプル:nested-records.json
関連するCSVガイド
ファイル処理とプライバシー
作業画面で選択したファイルはブラウザ内で処理します。公開URLを指定した場合は、ブラウザからそのURLへ直接アクセスします。接続先が外部サイトからの読み込みを許可していない場合は利用できません。CSV Dockのサーバーが代わりにファイルを取得することはありません。