Вкладені об’єкти та масиви зручні для представлення складних структур даних, але незручні там, де потрібен плаский список пар «ключ → значення» — наприклад, у таблицях, електронних таблицях чи логах. Flatten (сплощення) розв’язує саме цю задачу.
Як це працює
Кожне вкладене поле перетворюється на один рядок, де ключ — це повний шлях до значення, записаний через крапку чи квадратні дужки, а значення — саме значення. Наприклад, {"user": {"address": {"city": "Київ"}}} перетворюється на пару user.address.city → "Київ". Елементи масивів отримують індекс у шляху, наприклад items[0].name.
Навіщо це потрібно
- Імпортувати вкладені дані в електронну таблицю чи плоску таблицю бази даних, де немає вкладеності.
- Спростити порівняння двох складних об’єктів — плаский список простіше зіставити рядок за рядком.
- Швидко знайти конкретне значення в дуже глибоко вкладеному JSON, побачивши весь шлях до нього одразу.
Що варто пам’ятати
Сплощення — операція з втратами у сенсі зручності зворотного перетворення: щоб відновити оригінальну вкладену структуру з плаского списку, потрібно знову розпарсити шляхи. Для одноразового аналізу чи експорту даних це зазвичай не проблема.
Зворотна операція: unflatten
Відновити вкладену структуру з плаского списку можна, розбираючи кожен ключ на сегменти шляху (за крапками й індексами в дужках) і послідовно створюючи вкладені об’єкти й масиви. Складність виникає, коли шлях неоднозначний — наприклад, якщо в даних одночасно є ключ "a.b" буквально і вкладений шлях a.b, unflatten не може однозначно визначити, який варіант мався на увазі.