Partilhar via


Como FOR JSON escapa de caracteres especiais e caracteres de controle

Aplica-se a: SQL Server 2016 (13.x) e versões posterioresAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (apenas serverless SQL pool)endpoint de análise SQL no Microsoft FabricArmazém de Dados no Microsoft FabricBase de dados SQL no Microsoft Fabric

Este artigo descreve como a cláusula FOR JSON de uma instrução do SQL Server SELECT escapa de caracteres especiais e representa caracteres de controle na saída JSON.

Este artigo descreve o suporte interno para JSON no Microsoft SQL Server. Para obter informações gerais sobre escape e codificação em JSON, consulte a Secção 2.5 do RFC JSON .

Fuga de caracteres especiais

Se os dados de origem contiverem caracteres especiais, a cláusula FOR JSON escapará deles na saída JSON com \, conforme mostrado na tabela a seguir. Essa fuga ocorre tanto nos nomes das propriedades quanto em seus valores.

Caráter especial Saída escapada
Aspas (") \"
Barra invertida (\) \\
Barra (/) \/
Backspace \b
Avanço de formulário \f
Nova linha \n
Retorno de carro \r
Tabulação horizontal \t

Caracteres de controlo

Se os dados de origem contiverem caracteres de controle, a cláusula FOR JSON os codificará na saída JSON no formato \u<code>, conforme mostrado na tabela a seguir.

Carácter de controlo Saída codificada
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Aqui está um exemplo da saída FOR JSON para dados de origem que inclui caracteres especiais e caracteres de controle.

Query:

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

Result:

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