Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: SQL Server 2016 (13.x) e versioni
successive Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (solo pool SQL senza server)
Endpoint di analisi SQL in Microsoft Fabric
Magazzino in Microsoft Fabric
Database SQL in Microsoft Fabric
È possibile formattare i risultati delle query come JSON o esportare i dati da SQL Server in formato JSON aggiungendo la clausola FOR JSON a un'istruzione SELECT. Usare la clausola FOR JSON per semplificare le applicazioni client delegando la formattazione dell'output JSON dell'app a SQL Server.
Note
Azure Data Studio è l'editor di query consigliato per le query JSON perché formatta automaticamente i risultati JSON, come illustrato in questo articolo. SQL Server Management Studio visualizza una stringa non formattata.
In Fabric Data Warehouse FOR JSON deve essere l'ultimo operatore nella query e pertanto non è consentito all'interno di sottoquery.
Formattare i risultati delle query
Quando si usa la clausola FOR JSON, è possibile specificare la struttura dell'output JSON in modo esplicito o determinarla automaticamente in base alla struttura dell'istruzione SELECT.
Per mantenere il controllo completo sul formato dell'output JSON, usare
FOR JSON PATH. È possibile creare oggetti wrapper e annidare proprietà complesse.Per formattare automaticamente l'output JSON in base alla struttura dell'istruzione
SELECT, usareFOR JSON AUTO.
Di seguito è riportato un esempio di istruzione SELECT con la clausola FOR JSON e il relativo output.
Controllo dell'output con FOR JSON PATH
In modalità PATH è possibile utilizzare la sintassi a punti, ad esempio Item.Price, per formattare l'output annidato.
Ecco una query di esempio che usa la modalità PATH con la clausola FOR JSON. L'esempio seguente usa anche l'opzione ROOT per specificare un elemento radice denominato.
Altre informazioni su FOR JSON PATH
Per informazioni ed esempi più dettagliati, vedere Formattare l'Output JSON Annidato con la Modalità PATH.
Per la sintassi e l'utilizzo, vedere Clausola SELECT - FOR (Transact-SQL).
Controllare altre opzioni di output JSON
Controllare l'output della clausola FOR JSON utilizzando le seguenti opzioni aggiuntive.
ROOTPer aggiungere un unico elemento di primo livello all'output JSON, specificare l'opzione
ROOT. Se non si specifica questa opzione, l'output JSON non ha alcun elemento radice. Per altre informazioni, vedere Aggiungere un nodo radice all'output JSON con l'opzione ROOT.INCLUDE_NULL_VALUESPer includere valori null nell'output JSON, specificare l'opzione
INCLUDE_NULL_VALUES. Se non si specifica questa opzione, l'output non include le proprietà JSON per i valoriNULLpresenti nei risultati della query. Per ulteriori informazioni, vedere Includere valori nulli in JSON - Opzione INCLUDE_NULL_VALUES.WITHOUT_ARRAY_WRAPPERPer rimuovere le parentesi quadre che racchiudono l'output JSON della clausola
FOR JSONper impostazione predefinita, specificare l'opzioneWITHOUT_ARRAY_WRAPPER. Usare questa opzione per generare un singolo oggetto JSON come output da un risultato contenente una sola riga. Se non si specifica questa opzione, l'output JSON viene formattato come una matrice, ovvero è racchiuso tra parentesi quadre. Per altre informazioni, vedere Rimuovere le parentesi quadre da JSON - Opzione WITHOUT_ARRAY_WRAPPER.
Output della clausola FOR JSON
L'output della clausola FOR JSON ha le seguenti caratteristiche:
Il set di risultati contiene un'unica colonna.
- Un set di risultati di piccole dimensioni può contenere un'unica riga.
- Un set di risultati di grandi dimensioni suddivide la stringa JSON su più righe.
Per impostazione predefinita, SQL Server Management Studio (SSMS) concatena i risultati in una singola riga quando l'impostazione dell'output è Risultati in formato griglia. La barra di stato di SQL Server Management Studio visualizza il conteggio effettivo delle righe.
Altre applicazioni client possono richiedere codice per ricombinare i risultati eccessivamente lunghi in un'unica stringa JSON valida concatenando i contenuti di più righe. Per un esempio di questo codice in un'applicazione C#, vedere Usare l'output FOR JSON in un'app client C#.
Screenshot dell'output FOR JSON in SQL Server Management Studio.
I risultati vengono formattati sotto forma di matrice di oggetti JSON.
Il numero di elementi nella matrice JSON è uguale al numero di righe nei risultati dell'istruzione SELECT (prima che venga applicata la clausola FOR JSON).
Ogni riga nei risultati dell'istruzione SELECT (prima che venga applicata la clausola FOR JSON) diventa un oggetto JSON separato nella matrice.
Ogni colonna nei risultati dell'istruzione SELECT (prima che venga applicata la clausola FOR JSON) diventa una proprietà dell'oggetto JSON.
I nomi delle colonne e i valori corrispondenti vengono sottoposti a escape in base alla sintassi JSON. Per altre informazioni, vedere How FOR JSON escapes special characters and control characters (Come FOR JSON esegue l'escape di caratteri speciali e caratteri di controllo).
Example
Ecco un esempio che illustra come la clausola FOR JSON formatta l'output JSON.
Risultati delle query
| A | B | C | D |
|---|---|---|---|
| 10 | 11 | 12 | X |
| 20 | 21 | 22 | Y |
| 30 | 31 | 32 | Z |
Output JSON
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]
Contenuti correlati
- Come FOR JSON converte i tipi di dati di SQL Server in tipi di dati JSON
- Come FOR JSON esegue l'escape dei caratteri speciali e di controllo
- Video: JSON come bridge tra NoSQL e mondi relazionali
- Clausola SELECT - FOR (Transact-SQL)
- Usare l'output FOR JSON nel motore di database SQL e nelle app client