Усі статті

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

JSON — далеко не єдиний формат для структурованих даних. YAML, CSV, XML і TOML вирішують схожі задачі, але кожен формат сформувався в певній екосистемі та має власні сильні сторони, тож конвертація між ними — звичайна практична потреба.

Чим формати відрізняються

  • YAML — читабельніший за JSON завдяки відступам замість дужок, популярний для конфігів (CI/CD, Kubernetes, Docker Compose).
  • CSV — плаский табличний формат без вкладеності, зручний для електронних таблиць та імпорту в аналітичні інструменти.
  • XML — старіший формат з атрибутами й просторами імен, усе ще широко використовується у корпоративних та SOAP-системах.
  • TOML — простий формат для конфігів, орієнтований на однозначність і легкість написання вручну (наприклад, у Rust-екосистемі).

Втрати при конвертації

Не всі перетворення рівноцінні. JSON → CSV втрачає вкладеність: глибокі об’єкти й масиви змінної довжини погано вкладаються у прямокутну таблицю, тому їх доводиться сплощувати чи спрощувати. Конвертація JSON ↔ YAML чи JSON ↔ TOML, навпаки, майже завжди без втрат, оскільки обидва формати підтримують вкладені структури так само, як JSON.

Навіщо це потрібно

  • Перенести конфігурацію з одного інструмента (що очікує YAML) в інший (що очікує JSON), і навпаки.
  • Експортувати дані з API в CSV для аналізу в електронних таблицях.
  • Інтегрувати систему, що працює з XML, із сучасним JSON-based API.

Пастка авто-типізації в YAML

YAML-парсер намагається вгадати тип значення без лапок: рядок version: 1.20 може перетворитися на число 1.2 (втративши кінцевий нуль), а country: NO — на булеве значення false, бо YAML 1.1 трактує NO/YES як булеві літерали. Щоб уникнути такої непередбачуваної конвертації, значення, які мають лишатися рядком, варто явно брати в лапки перед конвертацією в JSON.

Спробувати інструмент