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

Étapes suivantes