Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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)
Point de terminaison d'analytique SQL dans Microsoft Fabric
Warehouse dans Microsoft Fabric
Base de données SQL 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. 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 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 | Sortie placée dans une séquence d’échappement |
|---|---|
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"
}
]