Sdílet prostřednictvím


Jak PRO JSON escapuje speciální znaky a řídicí znaky

Platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pouze bezserverový fond SQL)Koncový bod analýzy SQL ve službě Microsoft FabricSklad v Microsoft FabricSQL databáze 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.

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 Escapovaný výstup
Uvozovky (") \"
Zpětné lomítko (\) \\
Lomítko (/) \/
Backspace \b
Podávání formuláře \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 Kódovaný výstup
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Tady je příklad výstupu FOR JSON pro zdrojová data, která obsahují speciální znaky i řídicí znaky.

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