Усі статті

JSON Repair: чому JSON ламається і як це виправити

«Поламаний» JSON — поширена проблема: файл виглядає майже правильно, але парсер відмовляється його читати. Найчастіше причина в невеликих синтаксичних відхиленнях, які легко припуститися при ручному редагуванні.

Типові причини невалідного JSON

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

Як працює автоматичне виправлення

Інструмент ремонту JSON застосовує евристики: додає відсутні лапки, прибирає зайві коми, закриває незакриті дужки на основі контексту. Це працює для типових, поширених помилок, але не є магією — інструмент не може вгадати, яке значення малося на увазі, якщо дані пошкоджені серйозніше.

Межі можливого

Автоматичний ремонт виправляє синтаксис, а не семантику. Якщо в даних пропущено ціле поле чи значення перекручене логічно (а не синтаксично), інструмент цього не виявить — потрібна ручна перевірка результату.

Коли ремонт неоднозначний

Деякі пошкодження мають кілька однаково правдоподібних виправлень. Наприклад, обірваний рядок {"a": 1, "b": 2 можна закрити просто дужкою — і втратити дані, якщо насправді малося на увазі ще одне поле. У таких випадках евристика ремонту робить «найменш руйнівне» припущення (найчастіше — просто закрити відкриті дужки), але це здогадка, а не гарантія відновлення початкового наміру.

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