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 (jenom bezserverový fond SQL)koncový bod SQL Analytics v Microsoft FabricWarehouse 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"
    }
]