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

Применимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) и более поздние версииПрименимо к:Applies to: даSQL Server 2016 (13.x);SQL Server 2016 (13.x)yesSQL Server 2016 (13.x);SQL Server 2016 (13.x) and later

В этом разделе описано, как предложение FOR JSON в инструкции SQL Server SELECT экранирует специальные символы и представляет управляющие символы в выходных данных JSON.This topic describes how the FOR JSON clause of a SQL Server SELECT statement escapes special characters and represents control characters in the JSON output.

Важно!

На этой странице описывается встроенная поддержка JSON в Microsoft SQL Server.This page describes the built-in support for JSON in Microsoft SQL Server. Общие сведения об экранировании и кодировании в формате JSON см. в статье 2.5 RFC по JSON (https://www.ietf.org/rfc/rfc4627.txt).For general info about escaping and encoding in JSON, see Section 2.5 of the JSON RFC - https://www.ietf.org/rfc/rfc4627.txt.

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

Если исходные данные содержат специальные символы, предложение FOR JSON экранирует их в выходных данных JSON с помощью \, как показано в следующей таблице.If the source data contains special characters, the FOR JSON clause escapes them in the JSON output with \, as shown in the following table. Такое экранирование происходит как в именах свойств, так и в их значениях.This escaping occurs both in the names of properties and in their values.

Специальный символSpecial character Экранированные выходные данныеEscaped output
Кавычки («»)Quotation mark (") \"\"
Обратная косая черта (\)Backslash (\) \\
Косая черта (/)Slash (/) \/
ОтменаBackspace \b\b
Перевод страницыForm feed \f\f
Новая строкаNew line \n\n
Возврат кареткиCarriage return \r\r
Горизонтальная табуляцияHorizontal tab \t\t

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

Если исходные данные содержат управляющие символы, предложение FOR JSON кодирует их в выходных данных JSON в формате \u<code>, как показано в следующей таблице.If the source data contains control characters, the FOR JSON clause encodes them in the JSON output in \u<code> format, as shown in the following table.

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

ПримерExample

Ниже приведен пример выходных данных, возвращаемых FOR JSON для источника данных, содержащего как специальные символы, так и управляющие символы.Here's an example of the FOR JSON output for source data that includes both special characters and control characters.

Запрос:Query:

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

Результат:Result:

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

Дополнительные сведения о JSON в SQL Server и базе данных SQL AzureLearn more about JSON in SQL Server and Azure SQL Database

Видео МайкрософтMicrosoft videos

Наглядные инструкции по встроенной поддержке JSON в SQL Server и базе данных SQL Azure см. в следующих видео.For a visual introduction to the built-in JSON support in SQL Server and Azure SQL Database, see the following videos:

См. также:See Also

Форматирование результатов запроса как JSON с помощью предложения FOR JSON (SQL Server)Format Query Results as JSON with FOR JSON (SQL Server)
Предложение FORFOR Clause