Все статьи

JSON Flatten: превращение вложенной структуры в плоский список

Вложенные объекты удобны для описания структуры данных, но плохо ложатся в таблицу или файл локализации. Flatten превращает {"меню": {"файл": {"открыть": "Открыть"}}} в один плоский ключ меню.файл.открыть → "Открыть" — именно так устроены файлы переводов во многих CMS и фреймворках локализации рунета.

Как это работает

Каждое вложенное поле превращается в одну строку, где ключ — это полный путь через точку или индекс в квадратных скобках, а значение — само значение. Например, {"user": {"город": "Москва"}} станет парой user.город → "Москва". Элементы массива получают индекс в пути: items[0].название.

Зачем это нужно переводчикам и локализаторам

Плоские ключи вида settings.profile.title — стандарт для файлов переводов в i18next, vue-i18n и подобных библиотеках, которые массово используются в русскоязычных проектах. Переводчику в CAT-инструменте (или просто в Excel) гораздо проще работать со списком «ключ → строка», чем разбираться во вложенной структуре JSON вручную.

Зачем это нужно вообще

  • Импортировать вложенные данные в таблицу базы данных или Excel без вложенности.
  • Упростить построчное сравнение двух сложных объектов.
  • Быстро найти конкретное значение в глубоко вложенном JSON, увидев весь путь сразу.

Обратная операция: unflatten

Восстановить вложенную структуру из плоского списка можно, разобрав каждый ключ на сегменты пути (по точкам и индексам в скобках) и последовательно создав вложенные объекты и массивы. Сложность возникает, если путь неоднозначен — например, если в данных одновременно есть буквальный ключ "a.b" и вложенный путь a.b: unflatten не сможет однозначно определить, что имелось в виду, и сообщит о конфликте.

Попробовать инструмент