Formatowanie zagnieżdżonych danych wyjściowych JSON przy użyciu trybu PATH (SQL Server)
Dotyczy: SQL Server 2016 (13.x) i nowszych
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (tylko bezserwerowa pula SQL)
Aby mieć pełną kontrolę nad wynikiem klauzuli FOR JSON, użyj opcji PATH.
Tryb PATH umożliwia tworzenie obiektów opakowujących i zagnieżdżanie złożonych właściwości. Wyniki są formatowane jako tablica obiektów JSON.
Alternatywą jest użycie opcji AUTO do automatycznego formatowania danych wyjściowych na podstawie struktury instrukcji SELECT.
- Aby uzyskać więcej informacji na temat opcji AUTO, zobacz Automatyczne formatowanie wyników JSON w trybie AUTO.
- Aby zapoznać się z omówieniem obu opcji, zobacz Wyniki zapytania w formacie JSON.
Poniżej przedstawiono kilka przykładów klauzuli FOR JSON z opcją PATH. Formatuj zagnieżdżone wyniki przy użyciu nazw kolumn rozdzielonych kropkami lub przy użyciu zagnieżdżonych zapytań, jak pokazano w poniższych przykładach. Domyślnie wartości null nie są uwzględniane w danych wyjściowych FOR JSON. usługi Azure Data Studio jest zalecanym edytorem zapytań dla zapytań JSON, ponieważ automatycznie formatuje wyniki JSON (jak pokazano w tym artykule) zamiast wyświetlania prostego ciągu.
Przykład — nazwy kolumn rozdzielonych kropkami
Poniższe zapytanie formatuje pięć pierwszych wierszy z tabeli AdventureWorks Person
jako kod JSON.
Klauzula FOR JSON PATH używa aliasu kolumny lub nazwy kolumny do określenia nazwy klucza w danych wyjściowych JSON. Jeśli alias zawiera kropki, opcja PATH tworzy zagnieżdżone obiekty.
Zapytanie
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH
Wynik
[{
"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"
}
}]
Przykład — wiele tabel
Jeśli odwołujesz się do więcej niż jednej tabeli w zapytaniu, FOR JSON PATH zagnieżdża każdą kolumnę przy użyciu aliasu. Następujące zapytanie tworzy jeden obiekt JSON dla pary OrderHeader, OrderDetails połączonej w zapytaniu.
Zapytanie
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
wynik
[{
"Order": {
"Number": "SO43659",
"Date": "2011-05-31T00:00:00"
},
"Product": {
"Price": 2024.9940,
"Quantity": 1
}
}, {
"Order": {
"Number": "SO43659"
},
"Product": {
"Price": 2024.9940
}
}]
Dowiedz się więcej o formacie JSON w programie SQL Server i usłudze Azure SQL Database
Klipy wideo firmy Microsoft
Aby zapoznać się z wizualnym wprowadzeniem do wbudowanej obsługi kodu JSON w programie SQL Server i usłudze Azure SQL Database, zobacz następujące wideo: