Bagikan melalui


Bagaimana FOR JSON menghindari karakter khusus dan karakter kontrol

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (hanya kumpulan SQL tanpa server)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft FabricSQL database di Microsoft Fabric

Artikel ini menjelaskan bagaimana FOR JSON klausul pernyataan SQL Server SELECT lolos dari karakter khusus dan mewakili karakter kontrol dalam output JSON.

Artikel ini menjelaskan dukungan bawaan untuk JSON di Microsoft SQL Server. Untuk informasi umum tentang penghindaran dan pengodean di JSON, lihat Bagian 2.5 dari JSON RFC.

Escape karakter khusus

Jika data sumber berisi karakter khusus, FOR JSON klausa akan lolos dalam output JSON dengan \, seperti yang ditunjukkan dalam tabel berikut. Pelepasan ini terjadi baik dalam nama properti maupun nilai-nilainya.

Karakter khusus Output yang di-escape
Tanda kutip (") \"
Tanda garis miring terbalik (\) \\
Garis miring (/) \/
Backspace \b
Ganti halaman \f
Baris baru \n
Kembali ke awal \r
Tab horizontal \t

Karakter kontrol

Jika data sumber berisi karakter kontrol, FOR JSON klausa mengodekannya dalam output JSON dalam \u<code> format, seperti yang ditunjukkan dalam tabel berikut.

Karakter kontrol Output yang dikodekan
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Berikut adalah contoh FOR JSON output untuk data sumber yang mencakup karakter khusus dan karakter kontrol.

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