Aracılığıyla paylaş


FOR JSON özel karakterlerden ve denetim karakterlerinden nasıl kaçınıyor?

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (yalnızca sunucusuz SQL havuzu)Microsoft Fabric'te SQL analitik uç noktasıMicrosoft Fabric'te depo veritabanıMicrosoft Fabric'te SQL veritabanı

Bu makalede, SQL Server FOR JSON deyiminin SELECT yan tümcesinin özel karakterlerden nasıl kaçtığı ve JSON çıkışındaki denetim karakterlerini nasıl temsil ettiği açıklanmaktadır.

Bu makalede, Microsoft SQL Server'da JSON için yerleşik destek açıklanmaktadır. JSON'da kaçış ve kodlama hakkında genel bilgi için bkz. JSON RFCBölüm 2.5.

Özel karakterlerin kaçışı

Kaynak veriler özel karakterler içeriyorsa, FOR JSON yan tümcesi aşağıdaki tabloda gösterildiği gibi \ile JSON çıkışında bu karakterlerden kaçar. Bu kaçış hem özelliklerin adlarında hem de değerlerinde gerçekleşir.

Özel karakter Kaçış çıktısı
Tırnak işareti (") \"
Ters eğik çizgi (\) \\
Eğik çizgi (/) \/
Backspace \b
Form akışı \f
Yeni satır \n
Satır başı dönüşü \r
Yatay sekme \t

Denetim karakterleri

Kaynak veriler denetim karakterleri içeriyorsa, FOR JSON yan tümcesi bunları aşağıdaki tabloda gösterildiği gibi JSON çıkışında \u<code> biçimde kodlar.

Denetim karakteri Kodlanmış çıkış
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Burada, hem özel karakterleri hem de denetim karakterlerini içeren kaynak veriler için FOR JSON çıktısının bir örneği verilmişti.

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