JSON parent/child CSV roundtrip guide
注文JSONをCSVで編集して戻す:親子キー・順番・nullを保つ手順
入れ子の注文JSONを親CSVと明細CSVへ分け、親キー・子の順番・型・nullを残したまま、明細Bの数量だけ3から4へ直します。
JSON parent/child CSV roundtrip guide
入れ子の注文JSONを親CSVと明細CSVへ分け、親キー・子の順番・型・nullを残したまま、明細Bの数量だけ3から4へ直します。
元の orders 配列には注文 001 と 002 があり、明細はA/B/Cの3件です。親と子を別々の表にしても、parent_id と0始まりの ordinal を残せば、配列同士の直積を作らずに元の関係へ戻せます。
| 親 | 明細 | 対応 |
|---|---|---|
| 001 | 0:A / 1:B | 001に2件 |
| 002 | 0:C | 002に1件 |
parents.csv は注文IDとnoteの意味を持ち、children.csv は親ID・順番・SKU・数量を持ちます。固有キーがない場合の仮IDは文書内で固定し、別の資料のIDと混ぜません。schema/mapping.json に列、JSON path、型、null方針を残します。
parent_id=001ordinal=0 → Aordinal=1 → B001.note = null002.note = ""空欄だけでnullにしないedited-children.csv では 001 / ordinal 1 / B の qty だけを 3 → 4 にします。親のID・note、明細A/C、順番は変更しません。数量合計は元の6から7になります。
| 行 | 変更前 | 変更後 | 変更path |
|---|---|---|---|
| 001 / 1 / B | qty 3 | qty 4 | /orders/0/items/1/qty |
| その他 | そのまま | そのまま | なし |
expected.json では注文数2、明細数3、数量合計7です。IDと数量の型、子の並び、001.note=null と 002.note=""、明細がない場合の空配列を確認します。JSONのキーの見た目や整形だけの差は、値・型・pathの差と分けて扱います。
orders[0].items[1].qty: 3 → 4parents: 2 / children: 3 / total qty: 7orders[0].items は A, B の順orphan.csv の親ID 999 は存在しないため、親を勝手に作らず確認へ止めます。duplicate-parent.csv の注文ID 001 重複も先頭行を採用しません。ordinal欠損、型不明の空欄、親子対応の不一致は、出力を保存せず対象版を確認します。
原本とCSVはこのガイドのfixtureです。実務では原本を不変で保管し、変換前後を独立に比較してください。
expected.json とpath単位で比較し、入力を外部へ送信しない。