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 nowszych
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (tylko bezserwerowa pula SQL)
Aby sformatować dane wyjściowe klauzuli FOR JSON automatycznie na podstawie struktury instrukcji SELECT, określ opcję AUTO.
Po określeniu opcji AUTO format danych wyjściowych JSON jest automatycznie określany na podstawie kolejności kolumn na liście SELECT i ich tabelach źródłowych. Nie można zmienić tego formatu.
Alternatywą jest użycie opcji PATH, aby zachować kontrolę nad danymi wyjściowymi.
- Aby uzyskać więcej informacji na temat opcji PATH, zobacz Format Zagnieżdżone dane wyjściowe JSON w trybie PATH.
- Aby zapoznać się z omówieniem obu opcji, zobacz Formatowanie wyników zapytania jako JSON.
Zapytanie korzystające z opcji FOR JSON AUTO musi mieć klauzulę FROM.
Poniżej przedstawiono kilka przykładów klauzuli FOR JSON z opcją AUTO. 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łady
Przykład 1
Zapytanie
Gdy zapytanie odwołuje się tylko do jednej tabeli, wyniki klauzuli FOR JSON AUTO są podobne do wyników FOR JSON PATH. W tym przypadku FOR JSON AUTO nie tworzy zagnieżdżonych obiektów. Jedyną różnicą jest to, że FOR JSON AUTO wyprowadza aliasy oddzielone kropkami (na przykład Info.MiddleName
w poniższym przykładzie) jako klucze z kropkami w nazwach, a nie jako obiekty zagnieżdżone.
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON AUTO
wynik
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sánchez",
"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.",
"Info.MiddleName": "A"
}]
Przykład 2
Zapytanie
Podczas łączenia tabel kolumn w pierwszej tabeli są generowane jako właściwości obiektu głównego. Kolumny w drugiej tabeli są generowane jako właściwości zagnieżdżonego obiektu. Nazwa tabeli lub alias drugiej tabeli (przykładowo D
w poniższym przykładzie) służy jako nazwa zagnieżdżonej tablicy.
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO
Wynik
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO43659",
"D": [{
"UnitPrice": 34.40
}, {
"UnitPrice": 134.24,
"OrderQty": 5
}]
}]
Przykład 3
Zapytanie
Zamiast używać FOR JSON AUTO, możesz zagnieździć podzapytanie FOR JSON PATH w instrukcji SELECT, jak pokazano w poniższym przykładzie. W tym przykładzie wynik jest taki sam jak w poprzednim przykładzie.
SELECT TOP 2
SalesOrderNumber,
OrderDate,
(SELECT UnitPrice, OrderQty
FROM Sales.SalesOrderDetail AS D
WHERE H.SalesOrderID = D.SalesOrderID
FOR JSON PATH) AS D
FROM Sales.SalesOrderHeader AS H
FOR JSON PATH
wynik
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
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: