Ошибка парсинга документа JSON в 1С:Предприятие 8.3 — Решение
- Исключение:
Ошибка парсинга документа JSON / Недопустимый символ при чтении JSON. - Сбой интеграции с внешними REST API и микросервисами.
- Неправильный формат дат (ISO 8601 vs 1C Date Format).
- Наличие висячих запятых (trailing commas) или одинарных кавычек вместо двойных.
1. Проверка синтаксиса JSON через безопасный блок
Спецификация RFC 8259 требует строгого использования двойных кавычек " для ключей и строковых значений, а также запрещает завершающие запятые перед закрывающими скобками } или ].
// Безопасный парсинг входящего JSON
Чтение = Новый ЧтениеJSON;
Попытка
Чтение.УстановитьСтроку(ВходящаяСтрокаJSON);
// Чтение в структуру или соответствие
Результат = ПрочитатьJSON(Чтение, Истина);
Исключение
ВызватьИсключение "Невалидный JSON: " + ОписаниеОшибки();
Фиксировать
Чтение.Закрыть();
КонецПопытки;2. Настройка восстановления формата дат (ISO 8601)
По умолчанию 1С ожидает даты в кастомном представлении. Для стандартных дат REST API используйте ФорматДатыJSON.ISO:
// Десериализация дат формата ISO8601 (2026-03-31T12:00:00Z)
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ВходящийJSON);
Настройки = Новый НастройкиСериализацииJSON;
Настройки.ФорматДаты = ФорматДатыJSON.ISO;
Данные = ПрочитатьJSON(Чтение, Ложь, , , , Настройки);3. Предобработка поврежденных строк перед разбором
// Удаление висячих запятых регулярным выражением перед парсингом
СтрокаJSON = СтрЗаменить(СтрокаJSON, ",}", "}");
СтрокаJSON = СтрЗаменить(СтрокаJSON, ",]", "]"); Частые вопросы (FAQ)
Почему 1С парсит JSON в Соответствие вместо Структуры?
Если второй параметр метода ПрочитатьJSON() установлен в Ложь, создается Соответствие. Если Истина — Структура. Если в JSON есть ключи с дефисами (например, 'user-id'), Структура вызовет ошибку, так как имя свойства 1С не может содержать дефис.
Как сериализовать ТаблицуЗначений в JSON?
Сконвертируйте ТаблицуЗначений в Массив Структур строк, либо используйте сериализатор XDTO / ЗаписатьJSON() с кастомной функцией преобразования.
Что делать с числами большой точности (Int64), которые округляются в 1С?
Используйте свойство ЧтениеJSON.Прочитать() в потоковом режиме, считывая длинные числовые ID как строковые токены.
Как обработать значения null в JSON документе?
Значение null из JSON в платформе 1С автоматически преобразуется в тип Null (равно значению Null).