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
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
Result
[{
"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
Result
[{
"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, vedere i video seguenti:
- JSON as a bridge between NoSQL and relational worlds (JSON come ponte tra NoSQL e gli ambienti relazionali)