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
database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics (solo pool SQL serverless)
endpoint di analisi SQL in Microsoft Fabric
Warehouse in Microsoft Fabric
Per mantenere il controllo completo sull'output della clausola FOR JSON
, specificare l'opzione PATH
.
PATH
modalità consente di creare oggetti wrapper e annidare proprietà complesse. I risultati vengono formattati sotto forma di matrice di oggetti JSON.
L'alternativa consiste nell'usare l'opzione AUTO
per formattare automaticamente l'output in base alla struttura dell'istruzione SELECT
.
- Per ulteriori informazioni sull'opzione
AUTO
, consulta Formatta automaticamente l'output JSON con la modalità AUTO. - Per una panoramica di entrambe le opzioni, vedere Formattare i risultati della query come JSON con FOR JSON.
Ecco alcuni esempi della clausola FOR JSON
con l'opzione PATH
. Per formattare risultati annidati, usare nomi di colonna separati da punti oppure query annidate, come illustrato negli esempi seguenti. Per impostazione predefinita, i valori Null non sono inclusi nell'output FOR JSON
.
Azure Data Studio è l'editor di query consigliato per le query JSON perché formatta automaticamente i risultati JSON, come illustrato in questo articolo, anziché visualizzare una stringa flat.
Esempio: nomi di colonna separati da punti
La query seguente formatta le prime cinque righe della tabella Person
di AdventureWorks come JSON.
La clausola FOR JSON PATH
utilizza l'alias o il nome della colonna per determinare la chiave nell'output JSON. Se un alias contiene punti, l'opzione PATH
crea oggetti annidati.
Query
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
Risultato
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sanchez",
"Info": {
"MiddleName": "J"
}
}, {
"Id": 2,
"FirstName": "Terri",
"LastName": "Duffy",
"Info": {
"MiddleName": "Lee"
}
}, {
"Id": 3,
"FirstName": "Roberto",
"LastName": "Tamburello"
}, {
"Id": 4,
"FirstName": "Rob",
"LastName": "Walters"
}, {
"Id": 5,
"FirstName": "Gail",
"LastName": "Erickson",
"Info": {
"Title": "Ms.",
"MiddleName": "A"
}
}]
Esempio: più tabelle
Se si fa riferimento a più tabelle in una query, FOR JSON PATH
annida ogni colonna usando il relativo alias. La query seguente crea un oggetto JSON per ogni coppia (OrderHeader, OrderDetails
) unita nella query.
Query
SELECT TOP 2 H.SalesOrderNumber AS 'Order.Number',
H.OrderDate AS 'Order.Date',
D.UnitPrice AS 'Product.Price',
D.OrderQty AS 'Product.Quantity'
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON PATH
Risultato
[{
"Order": {
"Number": "SO43659",
"Date": "2011-05-31T00:00:00"
},
"Product": {
"Price": 2024.9940,
"Quantity": 1
}
}, {
"Order": {
"Number": "SO43659"
},
"Product": {
"Price": 2024.9940
}
}]
Altre informazioni su JSON nel motore di database SQL
Per un'introduzione visiva al supporto JSON predefinito in SQL Server e nel database SQL di Azure, vedere i video seguenti:
- JSON as a bridge between NoSQL and relational worlds (JSON come ponte tra NoSQL e gli ambienti relazionali)