Как 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"
}
]
Следующие шаги
- Преобразование результатов запроса в формат JSON с помощью предложения FOR JSON (SQL Server)
- SELECT — предложение FOR (Transact-SQL)
- JSON as a bridge between NoSQL and relational worlds (JSON как мост между NoSQL и реляционными решениями)