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 FabricSQL-database in Microsoft Fabric Preview

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.

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.

Special character Escaped output
Aanhalingsteken (") \"
Backslash (\) \\
Slash (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \t

Control characters

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.

Control character Encoded output
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

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

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