Freigeben über


Schutz von Sonderzeichen und Steuerzeichen durch FOR JSON

Gilt für: SQL Server 2016 (13.x) und höhere Versionen Azure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse Analytics (nur serverlosen SQL-Pool)SQL-Analyseendpunkt in Microsoft FabricWarehouse in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Dieser Artikel beschreibt, wie die FOR JSON Klausel eines SQL-Servers SELECT Die Anweisung entweicht Sonderzeichen und stellt Steuerzeichen in der JSON-Ausgabe dar.

Dieser Artikel beschreibt die integrierte Unterstützung für JSON in Microsoft SQL-Server. Weitere Informationen zum Escapen und Codieren in JSON finden Sie in Abschnitt 2.5 des JSON RFC.

Unterdrückung von Sonderzeichen

Wenn die Quelldaten Sonderzeichen enthalten, bestimmt die FOR JSON Klausel unterbricht sie in der JSON-Ausgabe mit \wie in der folgenden Tabelle gezeigt. Dieser Schutz tritt in den Namen von Eigenschaften und in ihren Werte auf.

Sonderzeichen Eingabe mit Escape-Sequenzen
Anführungszeichen (") \"
Umgekehrter Schrägstrich (\) \\
Schrägstrich (/) \/
Backspace \b
Seitenvorschub \f
Neue Zeile \n
Wagenrücklauf \r
Horizontaler Tabulator \t

Steuerzeichen

Wenn die Quelldaten Steuerzeichen enthalten, wird der FOR JSON Klausel kodiert sie in der JSON-Ausgabe in \u<code> Format, wie in der folgenden Tabelle gezeigt.

Steuerzeichen Codierte Ausgabe
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f

Example

Hier ist ein Beispiel für die FOR JSON Ausgabe für Quelldaten, die sowohl Sonderzeichen als auch Steuerzeichen enthalten.

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