Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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 Microsoft Fabric
Aby automatycznie sformatować dane wyjściowe klauzuli FOR JSON na podstawie struktury instrukcji SELECT, użyj opcji AUTO.
Po określeniu AUTO opcji 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 utrzymania PATH kontroli nad danymi wyjściowymi.
- Aby uzyskać więcej informacji na temat
PATHopcji, zobacz Formatowanie zagnieżdżonych danych wyjściowych JSON przy użyciu trybu PATH. - Aby zapoznać się z omówieniem obu opcji, zobacz Formatowanie wyników zapytania jako kod JSON zFOR JSON.
Zapytanie korzystające z FOR JSON AUTO opcji 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.
Examples
Przykład 1
Query
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 rozdzielone kropkami (na przykład Info.MiddleName w poniższym przykładzie) jako klucze z kropkami, 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
Result
[{
"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
Query
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
Result
[{
"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
Query
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
Result
[{
"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 JSON w silniku bazy danych SQL
Aby zapoznać się z wizualnym wprowadzeniem do wbudowanej obsługi kodu JSON, zobacz następujące wideo: