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.