Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Экранирование косой черты при JSON-кодировании

Параметр: json_escape_forward_slash

По какой-то причине в оригинальном lua_cjson символ '/' экранируется. Однако согласно стандарту rfc4627 это необязательно и ставит под сомнение совместимость с другими реализациями.

Старое и новое поведение

Переключая параметр совместимости json_escape_forward_slash, можно выбрать, экранирует ли JSON-кодировщик символ '/' или нет:

tarantool> require('compat').json_escape_forward_slash = 'old'---...tarantool> require('json').encode('foo/bar')---- '"foo\/bar"'...tarantool> require('compat').json_escape_forward_slash = 'new'---...tarantool> require('json').encode('foo/bar')---- '"foo/bar"'...

Этот параметр влияет как на глобальный экземпляр сериализатора, так и на сериализаторы, созданные с помощью json.new(). Он также влияет на способ кодирования сообщений журнала при записи в журнал в формате json (когда параметр box.cfg.log_format установлен в значение 'json').

Известные проблемы совместимости

На данный момент не известно о несовместимых модулях.

Обнаружение проблем в кодовой базе

Оба стиля кодирования корректны с точки зрения стандарта JSON, но если модуль полагается на побайтовое сравнение результатов кодирования, это изменение может привести к ошибкам. Будьте осторожны при выполнении следующих действий:

  • Хеширование результатов json.encode().