Comment FOR JSON place dans une séquence d’échappement les caractères spéciaux et les caractères de contrôle (SQL Server)
S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics (pool SQL serverless uniquement)
Cet article explique comment la clause FOR JSON
d’une instruction SQL Server SELECT
place dans une séquence d’échappement les caractères spéciaux et représente les caractères de contrôle dans la sortie JSON.
Important
Cet article décrit la prise en charge intégrée de JSON dans Microsoft SQL Server. Si vous souhaitez des informations générales sur l’échappement et l’encodage dans JSON, consultez la section 2.5 de la RFC JSON.
Échappement des caractères spéciaux
Si les données sources contiennent des caractères spéciaux, la clause FOR JSON
place ces caractères dans une séquence d’échappement dans la sortie JSON avec \
, comme indiqué dans le tableau suivant. Cette opération se produit pour les noms des propriétés et leurs valeurs.
Caractère spécial | Sortie placée dans une séquence d’échappement |
---|---|
Guillemets (" ) |
\" |
Barre oblique inverse (\ ) |
\\ |
Barre oblique (/ ) |
\/ |
Retour arrière | \b |
Saut de page | \f |
Nouvelle ligne | \n |
Retour chariot | \r |
Tabulation horizontale | \t |
Caractères de contrôle
Si les données sources contiennent des caractères de contrôle, la clause FOR JSON
les encode dans la sortie JSON au format \u<code>
, comme indiqué dans le tableau suivant.
Caractère de contrôle | Sortie encodée |
---|---|
CHAR(0) | \u0000 |
CHAR(1) | \u0001 |
... | ... |
CHAR(31) | \u001f |
Exemple
Voici un exemple de sortie FOR JSON
pour des données sources contenant des caractères spéciaux et des caractères de contrôle.
Requête :
SELECT 'VALUE\ /
"' AS [KEY\/"],
CHAR(0) AS '0',
CHAR(1) AS '1',
CHAR(31) AS '31'
FOR JSON PATH;
Résultat :
[
{
"KEY\\\/\"": "VALUE\\ \/\r\n \"",
"0": "\u0000",
"1": "\u0001",
"31": "\u001f"
}
]