Delen via


Hoe FOR JSON speciale tekens en besturingstekens escapeert

van toepassing op: SQL Server 2016 (13.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (alleen serverloze SQL-pool)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

In dit artikel wordt beschreven hoe de FOR JSON-component van een SQL Server-instructie SELECT speciale tekens escapet en besturingstekens in de JSON-uitvoer vertegenwoordigt.

Belangrijk

In dit artikel wordt de ingebouwde ondersteuning voor JSON in Microsoft SQL Server beschreven. Zie sectie 2.5 van de JSON RFC-voor algemene informatie over escapen en codering in JSON.

Escape van speciale tekens

Als de brongegevens speciale tekens bevatten, ontsnapt de FOR JSON-component deze in de JSON-uitvoer met \, zoals wordt weergegeven in de volgende tabel. Deze escape vindt plaats in zowel de namen van eigenschappen als in hun waarden.

Speciaal teken Ontsnapte uitvoer
Aanhalingsteken (") \"
Backslash (\) \\
Slash (/) \/
Backspace \b
Formulierfeed \f
Nieuwe regel \n
Regelterugloop \r
Horizontaal tabblad \t

Controlekarakters

Als de brongegevens besturingstekens bevatten, codeert de FOR JSON clausule deze in de JSON-uitvoer in \u<code> formaat, zoals weergegeven in de volgende tabel.

besturingsteken gecodeerde uitvoer
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Voorbeeld

Hier volgt een voorbeeld van de FOR JSON-uitvoer voor brongegevens die zowel speciale tekens als besturingstekens bevatten.

Vraag:

SELECT 'VALUE\    /
  "' AS [KEY\/"],
    CHAR(0) AS '0',
    CHAR(1) AS '1',
    CHAR(31) AS '31'
FOR JSON PATH;

resultaat:

[
    {
        "KEY\\\/\"": "VALUE\\    \/\r\n  \"",
        "0": "\u0000",
        "1": "\u0001",
        "31": "\u001f"
    }
]