JSON

JSON Path Extractor / Flatten

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

Deeply nested JSON is hard to compare or iterate over programmatically. Flatten unrolls such a structure into a flat list of "path: value" pairs (e.g. store.book[0].price: 12.99), and Unflatten rebuilds it.

How to use it

Common uses

Things to keep in mind

Array index notation varies between libraries — this tool uses items[0], though some write items.0 without brackets.

Unflatten requires that paths don't conflict with each other (e.g. one and one.two at the same time) — otherwise the structure can't be unambiguously rebuilt.

Статья об этом инструменте: JSON Flatten: превращение вложенной структуры в плоский список

Часто задаваемые вопросы

Что на самом деле делает «выравнивание» (flatten) JSON-объекта?

Оно преобразует вложенные объекты и массивы в одноуровневый объект с ключами в точечной или скобочной нотации (например, user.address.city или items[0].id), делая глубоко вложенные данные удобнее читать как плоскую таблицу или импортировать в электронные таблицы.

Можно ли преобразовать выровненный JSON обратно в исходную вложенную форму?

Да, если нотация ключей согласована — обратный процесс восстанавливает исходную вложенную структуру, разбивая каждый путь ключа обратно на объекты и массивы.

Теряет ли выравнивание какую-либо информацию из исходного JSON?

Нет. Все значения сохраняются, меняется только структура, поскольку каждый уникальный вложенный путь становится отдельным плоским ключом.

Что произойдёт, если реальный ключ сам содержит точку?

Это неоднозначная ситуация: путь 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 популярны для конфигов.