JSON

JSON Path Extractor / Flatten

Розгортання вкладеного JSON у плаский список "шлях: значення" (Flatten) і збирання назад у вкладену структуру (Unflatten). Нотація шляху та сама, що й у JSONPath/JSON Diff: store.book[0].price.

Глибоко вкладений JSON складно порівнювати чи перебирати програмно. Flatten розгортає таку структуру в плаский список пар «шлях: значення» (наприклад, store.book[0].price: 12.99), а Unflatten збирає її назад.

Як користуватися

Типові сценарії

Що варто памʼятати

Формат позначення індексів масиву різниться між бібліотеками: тут використано items[0], хоча деякі інструменти пишуть items.0 без дужок.

Unflatten вимагає, щоб шляхи не конфліктували між собою (наприклад, one й одночасно one.two) — інакше неможливо однозначно відновити структуру.

Стаття про цей інструмент: JSON Flatten: перетворення вкладеної структури у плаский список

Часті запитання

Для чого потрібне розгортання (flatten) JSON?

Плаский список "шлях: значення" зручний для експорту в таблиці, порівняння значень чи пошуку конкретного поля у великому вкладеному документі без прокрутки структури.

Як позначаються елементи масивів у шляху?

Елементи масиву отримують індексовані ключі у квадратних дужках, наприклад store.book[0].price — це той самий формат нотації, що й у JSONPath та JSON Diff.

Чи завжди Unflatten точно відновлює оригінальну структуру?

Так, якщо шляхи не суперечать одне одному. Якщо два шляхи задають різні типи значень в одній і тій самій точці (наприклад, і об’єкт, і примітив), інструмент повідомить про конфлікт замість того, щоб мовчки щось перезаписати.

Що станеться, якщо реальний ключ сам містить крапку?

Це неоднозначна ситуація: шлях user.name може означати як вкладений об’єкт {"user": {"name": ...}}, так і плаский ключ {"user.name": ...}. Формат нотації з крапками цього не розрізняє, тому такі ключі варто уникати або обробляти окремо.

Чи однаковий формат шляхів у всіх подібних інструментах?

Ні. Крапкова нотація для об’єктів (user.name) поширена практично всюди, а от позначення індексів масиву різниться: тут використано items[0], але деякі бібліотеки пишуть items.0 без дужок.

Статті: JSON

JSON Formatter: форматування, мінімізація та валідація

Форматування для читабельності, мінімізація для розміру, валідація для коректності — три різні задачі з JSON.

JSONPath: як шукати дані у JSON без ручного парсингу

Як JSONPath дозволяє дістати потрібні значення з великого JSON одним виразом замість ручного обходу.

JSON Diff: чим структурне порівняння відрізняється від текстового

Чому порядок ключів не повинен впливати на порівняння двох JSON-документів.

JSON Schema: як описати й перевірити структуру JSON

Як JSON Schema дозволяє автоматично перевірити, чи відповідають дані очікуваному контракту.

JSON Sort Keys: навіщо сортувати ключі об’єкта

Чому порядок ключів у JSON не регламентований, але сортування все одно буває корисним.

JSON Repair: чому JSON ламається і як це виправити

Типові причини «поламаного» JSON і що автоматичний ремонт може, а що не може виправити.

Mock JSON Generator: навіщо потрібні фейкові дані

Як мок-дані дозволяють почати розробку інтерфейсу ще до того, як готовий бекенд.

JSON ↔ YAML/CSV/XML/TOML: коли і навіщо конвертувати

Які дані губляться при конвертації JSON в CSV і чому YAML та TOML популярні для конфігів.