Modalità di uso di FOR JSON delle sequenze di escape per i caratteri speciali e di controllo (SQL Server)
Si applica a: SQL Server 2016 (13.x) e alle sue versioni successive Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics (solo pool SQL serverless)
Questo argomento descrive il modo in cui la clausola FOR JSON
di un'istruzione SELECT
di SQL Server usa sequenze di escape per i caratteri speciali e rappresenta i caratteri di controllo nell'output JSON.
Importante
Questo articolo descrive il supporto predefinito per JSON in Microsoft SQL Server. Per informazioni generali sull'uso di escape e sulla codifica in JSON, vedere la sezione 2.5 della specifica JSON RFC.
Escape di caratteri speciali
Se i dati di origine contengono caratteri speciali, la clausola FOR JSON
usa sequenze di escape per tali caratteri nell'output JSON con \
, come illustrato nella tabella seguente. I caratteri di escape vengono usati sia nei nomi delle proprietà che nei relativi valori.
Carattere speciale | Output con caratteri di escape |
---|---|
Virgoletta (" ) |
\" |
Barra rovesciata (\ ) |
\\ |
Barra (/ ) |
\/ |
Backspace | \b |
Avanzamento carta | \f |
Nuova riga | \n |
Ritorno a capo | \r |
Tabulazione orizzontale | \t |
Caratteri di controllo
Se i dati di origine contengono caratteri di controllo, la clausola FOR JSON
codifica tali caratteri nell'output JSON nel formato \u<code>
, come illustrato nella tabella seguente.
Carattere di controllo | Output codificato |
---|---|
CHAR(0) | \u0000 |
CHAR(1) | \u0001 |
... | ... |
CHAR(31) | \u001f |
Esempio
Di seguito è riportato un esempio dell'output di FOR JSON
per dati di origine che includono sia caratteri speciali che caratteri di controllo.
Query:
SELECT 'VALUE\ /
"' AS [KEY\/"],
CHAR(0) AS '0',
CHAR(1) AS '1',
CHAR(31) AS '31'
FOR JSON PATH;
Risultato:
[
{
"KEY\\\/\"": "VALUE\\ \/\r\n \"",
"0": "\u0000",
"1": "\u0001",
"31": "\u001f"
}
]
Passaggi successivi
- Formattare i risultati delle query in formato JSON con FOR JSON (SQL Server)
- Clausola SELECT - FOR (Transact-SQL)
- JSON as a bridge between NoSQL and relational worlds (JSON come ponte tra NoSQL e gli ambienti relazionali)