Cómo FOR JSON inserta caracteres de escape en los caracteres especiales y caracteres de control (SQL Server)

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (solo grupo de SQL sin servidor)

En este artículo se describe cómo la cláusula FOR JSON de una instrucción SELECT de SQL Server inserta caracteres de escape en caracteres especiales y representa caracteres de control en la salida JSON.

Importante

En este artículo se describe la compatibilidad integrada con JSON en Microsoft SQL Server. Para obtener información general sobre la inserción de caracteres de escape y la codificación en JSON, vea la sección 2.5 de JSON RFC.

Secuencia de caracteres de escape en los caracteres especiales

Si los datos de origen contienen caracteres especiales, la cláusula FOR JSON inserta caracteres de escape en ellos en la salida de JSON con \, tal y como se muestra en la tabla siguiente. Esta secuencia de escape se produce tanto en los nombres de propiedades como en sus valores.

Carácter especial Salida con escape
Comillas (") \"
Barra diagonal inversa (\) \\
Barra diagonal (/) \/
Retroceso \b
Avance de página \f
Nueva línea \n
Retorno de carro \r
Tabulación horizontal \t

Caracteres de control

Si los datos de origen contienen caracteres de control, la cláusula FOR JSON los codifica en la salida de JSON en formato \u<code>, tal y como se muestra en la tabla siguiente.

Carácter de control Salida codificada
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Ejemplo

Se trata de un ejemplo de la salida de FOR JSON en datos de origen que incluye caracteres especiales y caracteres de control.

Consulta:

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

Resultado:

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

Pasos siguientes