Руководство разработчика

Функция JSON_НУЖНО_КОДИРОВАТЬ

Строковые данные в JSON заключаются в кавычки. Для символов "кавычка", "обратный слэш" и специальных символов используются последовательности, начинающиеся с обратного слеша. Например, символ табуляции (ASCII 9) представляется как "\t", a символ ASCII 4 как "\u0004". При разборе JSON такие последовательности преобразуются в "сырые" данные. Чтобы записать такие данные в XML их нужно снова закодировать. Само кодирование выполняется функцией JSON_КОДИРОВАТЬ.

Функция используется при формировании XML, предназначенного для последующего преобразования в JSON функцией XML_В_JSON. См. также формат XML для представления значения JSON.

ФУНКЦИЯ ЛОГИКА: JSON_НУЖНО_КОДИРОВАТЬ(СТРОКА: текст)

Параметры

текст
Текст, для которого определяется необходимость кодирования специальных символов и заключения в кавычки.

Возвращаемое значение

ДА – если надо кодировать, НЕТ – в противном случае.

Необходимость кодирования определяется наличием в строке специальных символов (ASCII 0 - 31) или пробельных символов в начале или конце строки. Кодирование выполняется для того, чтобы исходные данные не исказились при записи текста в XML (в т.ч. из-за применения форматирования). XML элемент, содержащий закодированный текст, должен иметь атрибут quoted со значением true.

Для упрощения представления данных JSON в XML строки, которые не требуют кодирования и заключения в кавычки, записываются в XML непосредственно. Для таких узлов XML атрибут quoted должен отсутствовать или быть равным false. Типичная ситуация, когда строк не требующих кодирования большинство. Наиболее характерный случай, когда кодирование необходимо – это многострочный текст.

Пример

ПЕРЕМ XML_КУРСОР: кур
//...
ПЕРЕМ текст = "Первая строка^r^sвторая строка"
ЕСЛИ JSON_НУЖНО_КОДИРОВАТЬ(текст) ТО
  кур.ЗАП_АТРИБУТ("quoted", "true")
  кур.ЗАП_ТЕКСТ(JSON_КОДИРОВАТЬ(текст))
ИНАЧЕ
  кур.ЗАП_ТЕКСТ(текст)
КОНЕЦ_ЕСЛИ

См. также: