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
- Dar formato JSON a los resultados de consulta con FOR JSON (SQL Server)
- SELECT: cláusula FOR (Transact-SQL)
- JSON as a bridge between NoSQL and relational worlds (JSON como puente entre los universos NoSQL y relacional)