Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (tylko bezserwerowa pula SQL)
Punkt końcowy analizy SQL w Microsoft Fabric
Magazyn w Microsoft Fabric
SQL database w wersji zapoznawczej Microsoft Fabric
Aby zachować pełną kontrolę nad danymi wyjściowymi klauzuli FOR JSON
, określ opcję 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 Formatowanie danych wyjściowych JSON automatycznie przy użyciu trybu AUTOMATYCZNEGO . - Aby zapoznać się z omówieniem obu opcji, zobacz Formatowanie wyników zapytania jako kod JSON zFOR 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
.
Azure Data Studio jest zalecanym edytorem zapytań dla zapytań JSON, ponieważ automatycznie formatuje wyniki JSON (jak pokazano w tym artykule) zamiast wyświetlać jednowierszowy ciąg.
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.
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"
}
}]
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 jej aliasu. Poniższe zapytanie tworzy jeden obiekt JSON dla każdej pary (OrderHeader, OrderDetails
) połączonej w zapytaniu.
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
}
}]
Dowiedz się więcej o JSON w silniku bazy danych SQL
Aby zapoznać się z wizualnym wprowadzeniem do wbudowanej obsługi kodu JSON, zobacz następujące wideo: