Compartir a través de


Cómo FOR JSON inserta caracteres de escape en los caracteres especiales y caracteres de control

Aplica a: SQL Server 2016 (13.x) y versiones posteriores y Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (solo para SQL pool sin servidor)punto final de SQL Analytics en Microsoft FabricAlmacén en Microsoft FabricBase de datos SQL en Microsoft Fabric

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.

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

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 escapada
Comillas (") \"
Barra diagonal inversa (\) \\
Barra diagonal (/) \/
Backspace \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

Example

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

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"
    }
]