Экранирование косой черты при 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().