Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2016 (13.x) och senare versioner
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (endast serverlös SQL-pool)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Om du vill formatera utdata för FOR JSON
-satsen automatiskt baserat på strukturen för SELECT
-instruktionen anger du alternativet AUTO
.
När du anger alternativet AUTO
bestäms formatet för JSON-utdata automatiskt baserat på ordningen på kolumnerna i SELECT-listan och deras källtabeller. Du kan inte ändra det här formatet.
Alternativet är att använda alternativet PATH
för att behålla kontrollen över utdata.
- Mer information om alternativet
PATH
finns i Formatera kapslade JSON-utdata med PATH-läge. - En översikt över båda alternativen finns i Formatera frågeresultat som JSON med FOR JSON.
En fråga som använder alternativet FOR JSON AUTO
måste ha en FROM
-sats.
Här följer några exempel på FOR JSON
-satsen med alternativet AUTO
.
Azure Data Studio är den rekommenderade frågeredigeraren för JSON-frågor eftersom det automatiskt formaterar JSON-resultaten (som du ser i den här artikeln) i stället för att visa en platt sträng.
Exempel
Exempel 1
Fråga
När en fråga endast refererar till en tabell liknar resultatet av FOR JSON AUTO
-satsen resultatet av FOR JSON PATH
. I det här fallet skapar FOR JSON AUTO
inte kapslade objekt. Den enda skillnaden är att FOR JSON AUTO
matar ut punktavgränsade alias (till exempel Info.MiddleName
i följande exempel) som nycklar med punkter, inte som kapslade objekt.
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON AUTO
resultat
[{
"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"
}]
Exempel 2
Fråga
När du kopplar tabeller genereras kolumner i den första tabellen som egenskaper för rotobjektet. Kolumner i den andra tabellen genereras som egenskaper för ett kapslat objekt. Tabellnamnet eller aliaset för den andra tabellen (till exempel D
i följande exempel) används som namnet på den kapslade matrisen.
SELECT TOP 2 SalesOrderNumber,
OrderDate,
UnitPrice,
OrderQty
FROM Sales.SalesOrderHeader H
INNER JOIN Sales.SalesOrderDetail D
ON H.SalesOrderID = D.SalesOrderID
FOR JSON AUTO
resultat
[{
"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
}]
}]
Exempel 3
Fråga
I stället för att använda FOR JSON AUTO kan du kapsla en FOR JSON PATH-underfråga i SELECT-instruktionen, som du ser i följande exempel. Det här exemplet ger samma resultat som föregående exempel.
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
resultat
[{
"SalesOrderNumber": "SO43659",
"OrderDate": "2011-05-31T00:00:00",
"D": [{
"UnitPrice": 24.99,
"OrderQty": 1
}]
}, {
"SalesOrderNumber": "SO4390",
"D": [{
"UnitPrice": 24.99
}]
}]
Läs mer om JSON i SQL Database Engine
En visuell introduktion till det inbyggda JSON-stödet i SQL Server och Azure SQL Database finns i följande videor: