Partager via


Comment FOR JSON place dans une séquence d’échappement les caractères spéciaux et les caractères de contrôle

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pool SQL serverless uniquement)Point de terminaison analytique SQL dans Microsoft FabricWarehouse dans Microsoft FabricSQL Database dans Microsoft Fabric

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.

Cet article décrit la prise en charge intégrée de JSON dans Microsoft SQL Server. Pour obtenir des informations générales sur l’échappement et l’encodage dans JSON, consultez la section 2.5 du RFC JSON.

Échappement des caractères spéciaux

Si les données sources contiennent des caractères spéciaux, la clause FOR JSON les place 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 Résultat échappé
Guillemet (") \"
Barre oblique inverse (\) \\
Barre oblique (/) \/
Backspace \b
Flux de formulaire \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

Example

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.

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