Как FOR JSON экранирует специальные и управляющие символы (SQL Server)

Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics (только бессерверный пул SQL)

В этой статье описывается, как FOR JSON предложение инструкции SQL Server SELECT экранирует специальные символы и представляет символы управления в выходных данных JSON.

Важно!

В этой статье описывается встроенная поддержка JSON в Microsoft SQL Server. Общие сведения о экранировании и кодировке в ФОРМАТЕ JSON см. в разделе 2.5 RFC JSON.

Экранирование специальных символов

Если исходные данные содержат специальные символы, FOR JSON предложение экранирует их в выходных данных JSON, \как показано в следующей таблице. Такое экранирование происходит как в именах свойств, так и в их значениях.

Специальный знак Экранированные выходные данные
Кавычка (") \"
Обратная косая черта (\) \\
Косая черта (/) \/
Backspace \b
Подача страницы \f
Новая строка \n
Возврат каретки \r
Горизонтальная табуляция \t

Управляющие символы

Если исходные данные содержат символы элемента управления, FOR JSON предложение кодирует их в выходных данных JSON в \u<code> формате, как показано в следующей таблице.

Управляющий символ Закодированные выходные данные
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Пример

Ниже приведен пример FOR JSON выходных данных для исходных данных, включающих как специальные символы, так и управляющие символы.

Запрос:

SELECT 'VALUE\    /
  "' AS [KEY\/"],
    CHAR(0) AS '0',
    CHAR(1) AS '1',
    CHAR(31) AS '31'
FOR JSON PATH;

Результат:

[
    {
        "KEY\\\/\"": "VALUE\\    \/\r\n  \"",
        "0": "\u0000",
        "1": "\u0001",
        "31": "\u001f"
    }
]

Следующие шаги