JSON
JSON Path Extractor / Flatten
Разворачивание вложенного JSON в плоский список "путь: значение" (Flatten) и сборка обратно во вложенную структуру (Unflatten). Нотация пути та же, что и в JSONPath/JSON Diff: store.book[0].price.
Глубоко вложенный JSON сложно сравнивать или перебирать программно. Flatten разворачивает такую структуру в плоский список пар «путь: значение» (например, store.book[0].price: 12.99), а Unflatten собирает её обратно.
Как пользоваться
- Flatten: вставьте вложенный JSON — получите плоский список всех конечных значений с полным путём к каждому.
- Unflatten: вставьте список пар «путь: значение», чтобы собрать из него вложенную JSON-структуру.
- Нотация пути та же, что и в JSONPath и JSON Diff этого сайта — items[0].name для элементов массива.
Типичные сценарии
- Превращение глубоко вложенного ответа API в плоский список для импорта в таблицу или систему аналитики.
- Построение словаря переводов или конфигурации из плоских ключей (form.errors.email) обратно во вложенный JSON.
- Быстрый поиск всех значений на определённую тему в очень большом JSON-документе через плоский список путей.
Что стоит помнить
Формат обозначения индексов массива различается между библиотеками: здесь используется items[0], хотя некоторые инструменты пишут items.0 без скобок.
Unflatten требует, чтобы пути не конфликтовали между собой (например, one и одновременно one.two) — иначе невозможно однозначно восстановить структуру.
Статья об этом инструменте: JSON Flatten: превращение вложенной структуры в плоский список
Часто задаваемые вопросы
Что на самом деле делает «выравнивание» (flatten) JSON-объекта?
Оно преобразует вложенные объекты и массивы в одноуровневый объект с ключами в точечной или скобочной нотации (например, user.address.city или items[0].id), делая глубоко вложенные данные удобнее читать как плоскую таблицу или импортировать в электронные таблицы.
Можно ли преобразовать выровненный JSON обратно в исходную вложенную форму?
Да, если нотация ключей согласована — обратный процесс восстанавливает исходную вложенную структуру, разбивая каждый путь ключа обратно на объекты и массивы.
Теряет ли выравнивание какую-либо информацию из исходного JSON?
Нет. Все значения сохраняются, меняется только структура, поскольку каждый уникальный вложенный путь становится отдельным плоским ключом.
Что произойдёт, если реальный ключ сам содержит точку?
Это неоднозначная ситуация: путь user.name может означать как вложенный объект {"user": {"name": ...}}, так и плоский ключ {"user.name": ...}. Формат нотации с точками этого не различает, поэтому таких ключей стоит избегать или обрабатывать отдельно.
Одинаков ли формат путей во всех подобных инструментах?
Нет. Точечная нотация для объектов (user.name) распространена практически везде, а вот обозначение индексов массива различается: здесь используется items[0], но некоторые библиотеки пишут items.0 без скобок.