Megosztás a következőn keresztül:


Hogyan kezeli a FOR JSON a speciális karakterek és vezérlőkarakterek escape-elését.

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (csak szerver nélküli SQL pool)SQL analytics endpoint a Microsoft FabricbanTárház a Microsoft FabricbanAdatbázis a Microsoft Fabricban

Ez a cikk azt ismerteti, hogyan menekíti el az SQL Server FOR JSON utasítás SELECT záradéka a speciális karaktereket, és hogyan jelöli a vezérlőkaraktereket a JSON-kimenetben.

Ez a cikk a Microsoft SQL Server JSON beépített támogatását ismerteti. A JSON-ban való meneküléssel és kódolással kapcsolatos általános információkért lásd a JSON RFC 2.5. szakaszát.

Speciális karakterek escape-elése

Ha a forrásadatok speciális karaktereket tartalmaznak, a FOR JSON záradék feloldja őket a JSON-kimenetben \, ahogyan az az alábbi táblázatban látható. Ez a menekülés mind a tulajdonságok neveiben, mind az értékükben történik.

Speciális karakter Kimenő kimenet
Idézőjel (") \"
Fordított perjel (\) \\
Perjel (/) \/
Backspace \b
Lapváltás \f
Új sor \n
Kocsivisszatérítés \r
Vízszintes lap \t

Vezérlőkarakterek

Ha a forrásadatok vezérlőkarakterekből állnak, a FOR JSON záradék \u<code> formátumban kódolja őket a JSON-kimenetben, ahogyan az az alábbi táblázatban látható.

Vezérlő karakter Kódolt kimenet
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Íme egy példa a forrásadatok FOR JSON kimenetére, amely speciális karaktereket és vezérlő karaktereket is tartalmaz.

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