Jak PRO JSON escapuje speciální znaky a řídicí znaky
platí pro: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
azure SQL Managed Instance
Azure Synapse Analytics (jenom bezserverový fond SQL)
koncový bod SQL Analytics v Microsoft Fabric
Warehouse v Microsoft Fabric
Tento článek popisuje, jak klauzule FOR JSON
příkazu SQL Server SELECT
nahrazuje speciální znaky a zobrazuje řídicí znaky ve výstupu JSON.
Důležitý
Tento článek popisuje integrovanou podporu json v Microsoft SQL Serveru. Obecné informace o escapingu a kódování ve formátu JSON naleznete v sekci 2.5 JSON RFC.
Escapování speciálních znaků
Pokud zdrojová data obsahují speciální znaky, klauzule FOR JSON
je ve výstupu JSON převede a nahradí pomocí \
, jak je znázorněno v následující tabulce. Tento únik se vyskytuje jak v názvech vlastností, tak v jejich hodnotách.
Speciální znak | Upravený výstup |
---|---|
Uvozovky (" ) |
\" |
Zpětné lomítko (\ ) |
\\ |
Lomítko (/ ) |
\/ |
Backspace | \b |
Přechod na novou stránku | \f |
Nový řádek | \n |
Návrat vozíku | \r |
Horizontální tabulátor | \t |
Řídicí znaky
Pokud zdrojová data obsahují řídicí znaky, klauzule FOR JSON
je zakóduje ve výstupu JSON ve formátu \u<code>
, jak je znázorněno v následující tabulce.
řídicí znak | zakódovaný výstup |
---|---|
ZNAK(0) | \u0000 |
ZNAK(1) | \u0001 |
... | ... |
ZNAK(31) | \u001f |
Příklad
Tady je příklad výstupu FOR JSON
pro zdrojová data, která obsahují speciální znaky i řídicí znaky.
Dotaz:
SELECT 'VALUE\ /
"' AS [KEY\/"],
CHAR(0) AS '0',
CHAR(1) AS '1',
CHAR(31) AS '31'
FOR JSON PATH;
výsledek:
[
{
"KEY\\\/\"": "VALUE\\ \/\r\n \"",
"0": "\u0000",
"1": "\u0001",
"31": "\u001f"
}
]