Hur FÖR JSON undflyr specialtecken och kontrolltecken

Gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (endast serverlös SQL-pool)SQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft FabricSQL-databas i Microsoft Fabric

Den här artikeln beskriver hur satsen i FOR JSON en SQL Server-instruktion SELECT undflyr specialtecken och representerar kontrolltecken i JSON-utdata.

I den här artikeln beskrivs det inbyggda stödet för JSON i Microsoft SQL Server. Allmän information om maskning och kodning i JSON finns i avsnitt 2.5 i JSON RFC.

Escape av specialtecken

Om källdata innehåller specialtecken FOR JSON kommer satsen att undvika dem i JSON-utdata med \, som visas i följande tabell. Den här utrymningen sker både i egenskapernas namn och i deras värden.

Specialtecken Undantagna utdata
Citattecken (") \"
Omvänt snedstreck (\) \\
Snedstreck (/) \/
Backspace \b
Formulärfeed \f
Ny rad \n
Vagnretur \r
Horisontell tabb \t

Kontrollera tecken

Om källdata innehåller kontrolltecken FOR JSON kodar satsen dem i JSON-utdata i \u<code> format, enligt följande tabell.

Kontrolltecken Kodade utdata
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Här är ett exempel på FOR JSON utdata för källdata som innehåller både specialtecken och kontrolltecken.

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