Compartilhar via


Como a FOR JSON ignora os caracteres especiais e os caracteres de controle

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (somente pool de SQL sem servidor)endpoint de análise de SQL no Microsoft FabricArmazém no Microsoft FabricBanco de dados SQL no Microsoft Fabric

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

Esse artigo descreve o suporte interno para JSON no Microsoft SQL Server. Para obter informações gerais sobre como fazer o escape e a codificação em JSON, veja a Seção 2.5 da RFC do JSON.

Ignorar os caracteres especiais

Se os dados de origem tiverem caracteres especiais, a cláusula FOR JSON os ignorará na saída JSON com \, conforme mostrado na tabela a seguir. Este escape ocorre nos nomes das propriedades e em seus valores.

Caractere especial Saída com escape
Aspas (") \"
Barra invertida (\) \\
Barra (/) \/
Backspace \b
Avanço de página \f
Nova linha \n
Retorno de carro \r
Guia horizontal \t

Caracteres de controle

Se os dados de origem tiverem caracteres de controle, a cláusula FOR JSON fará a codificação na saída JSON no formato \u<code>, conforme mostrado na tabela a seguir.

Caractere de controle Saída codificada
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Aqui está um exemplo da saída FOR JSON para os 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"
    }
]