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
- Flatten: paste nested JSON and get a flat list of every leaf value with its full path.
- Unflatten: paste a list of "path: value" pairs to rebuild a nested JSON structure from it.
- The path notation matches this site's JSONPath and JSON Diff tools — items[0].name for array elements.
Common uses
- Turning a deeply nested API response into a flat list for import into a spreadsheet or analytics system.
- Building a translation dictionary or config back into nested JSON from flat keys (form.errors.email).
- Quickly finding every value on a given topic in a very large JSON document via a flat path list.
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 без скобок.