«Поламаний» JSON — поширена проблема: файл виглядає майже правильно, але парсер відмовляється його читати. Найчастіше причина в невеликих синтаксичних відхиленнях, які легко припуститися при ручному редагуванні.
Типові причини невалідного JSON
- Зайва кома перед закриваючою дужкою —
{"a": 1,}, яку деякі мови (як JavaScript) толерують, а строгий JSON-парсер — ні. - Одинарні лапки замість подвійних — часта помилка при копіюванні з об’єктного літерала JavaScript, де обидва варіанти лапок допустимі.
- Незакавичені ключі —
{name: "Іван"}замість{"name": "Іван"}, теж валідно в JS, але не в JSON. - Коментарі — специфікація JSON не передбачає коментарів взагалі, на відміну від JSON5 чи JSONC.
- Обрізаний вивід — якщо відповідь API чи файл лога обрізані на середині, документ залишається незакритим.
Як працює автоматичне виправлення
Інструмент ремонту JSON застосовує евристики: додає відсутні лапки, прибирає зайві коми, закриває незакриті дужки на основі контексту. Це працює для типових, поширених помилок, але не є магією — інструмент не може вгадати, яке значення малося на увазі, якщо дані пошкоджені серйозніше.
Межі можливого
Автоматичний ремонт виправляє синтаксис, а не семантику. Якщо в даних пропущено ціле поле чи значення перекручене логічно (а не синтаксично), інструмент цього не виявить — потрібна ручна перевірка результату.
Коли ремонт неоднозначний
Деякі пошкодження мають кілька однаково правдоподібних виправлень. Наприклад, обірваний рядок {"a": 1, "b": 2 можна закрити просто дужкою — і втратити дані, якщо насправді малося на увазі ще одне поле. У таких випадках евристика ремонту робить «найменш руйнівне» припущення (найчастіше — просто закрити відкриті дужки), але це здогадка, а не гарантія відновлення початкового наміру.