Ошибки разбора JSON
JSON не прощает мелочей: одна лишняя запятая делает весь файл нечитаемым. Хорошая новость — ошибок ограниченный набор, и почти все находятся за минуту.
Семь ошибок по частоте
-
лишняя запятаячастая После последнего элемента списка или объекта её быть не должно -
пропущенная запятаячастая Между соседними элементами обязательна -
кавычки-ёлочкичастая Текстовый редактор заменил"на «типографские» — JSON их не принимает -
незакрытая скобкачастая Обычно при копировании куска файла -
комментариичастая Строки с//в чистом JSON недопустимы, хотя некоторые клиенты их терпят -
BOM в началередкая Невидимый маркер кодировки от редактора Windows -
обрезанный хвостредкая Файл скачан не полностью или скопирована часть
Как найти за минуту
-
Откройте файл в редакторе с подсветкой
Подойдёт любой современный редактор кода: он подсветит место ошибки красным.
-
Посмотрите на номер строки из сообщения
Клиенты часто пишут позицию: «unexpected token at line 24». Ошибка обычно строкой выше указанной.
-
Проверьте парность скобок
Редакторы подсвечивают пару при постановке курсора. Число
{должно совпадать с числом}. -
Проверьте последние элементы списков
Лишняя запятая почти всегда стоит перед закрывающей скобкой.
-
Пересохраните в UTF-8 без BOM
Если ошибка «на первом символе», а глазами всё в порядке — дело почти наверняка в BOM.
Как выглядят ошибки в тексте
// ЛИШНЯЯ ЗАПЯТАЯ
"rules": [
{ "type": "field", "outboundTag": "direct" }, ← запятая перед ] лишняя
]
// ПРОПУЩЕННАЯ ЗАПЯТАЯ
{ "tag": "proxy" "protocol": "vless" } ← между полями нужна запятая
// КАВЫЧКИ-ЁЛОЧКИ
{ «tag»: «proxy» } ← только прямые кавычки
// НЕЗАКРЫТАЯ СКОБКА
{ "outbounds": [ { "tag": "proxy" } ← не хватает ] и }
Ошибки, которые JSON пропускает
Файл может быть синтаксически безупречным и при этом нерабочим. Такие ошибки клиент не поймает при загрузке — они проявятся при подключении.
- Опечатка в имени поля:
serverNameнаписано какservername. - Тег выхода в правиле не совпадает с тегом в
outbounds. - Порт указан строкой вместо числа:
"port": "443"вместо"port": 443— часть клиентов принимает, часть нет. - Пропущен обязательный параметр Reality — файл читается, соединение не устанавливается.
Всё это ищется в логе: там видно, на каком этапе всё остановилось.
Проверьте, в строке дело или в самом доступе
Формат можно разобрать здесь, но живой ли сервер — показывает только подстановка. Подставьте в тот же клиент заведомо рабочую ссылку: подключилось — клиент и настройки исправны, вопрос к вашему ключу. Демо ТОК VPN на 3 дня выдаётся без карты.
- ссылка приходит сразу
- подходит Happ и другим клиентам
- карта не нужна
Клиент пишет «неверный формат», но файл открывается в браузере.
Браузер терпимее. Проверьте формат ядра: конфиг sing-box в клиенте на Xray синтаксически верен, но структурно чужой.
Можно ли оставлять комментарии в конфиге?
В чистом JSON — нет. Часть клиентов допускает //, но полагаться на это не стоит: при переносе в другой клиент файл перестанет читаться.
Разбор формата отвечает на вопрос «строка составлена правильно?», но не на вопрос «доступ ещё живой?». Второй проверяется только подстановкой: демо ТОК VPN на 3 дня, без карты — ссылка приходит сразу, и по ней видно, ваш ли ключ виноват.
Взять ссылку для сверки →