Megosztás a következőn keresztül:


Beágyazott JSON-kimenet formázása PATH móddal

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (csak szerver nélküli SQL pool)SQL analytics endpoint a Microsoft FabricbanTárház a Microsoft FabricbanAdatbázis a Microsoft Fabricban

A FOR JSON záradék kimenetének teljes vezérléséhez adja meg a PATH beállítást.

PATH mód lehetővé teszi burkolóobjektumok létrehozását és összetett tulajdonságok beágyazását. Az eredmények JSON-objektumok tömbjeként vannak formázva.

A másik lehetőség az AUTO lehetőség használata a kimenet automatikus formázására a SELECT utasítás struktúrája alapján.

Íme néhány példa a FOR JSON záradékra a PATH lehetőséggel. Formázza a beágyazott eredményeket pontokkal tagolt oszlopnevek vagy beágyazott lekérdezések használatával, ahogyan az alábbi példákban is látható. Alapértelmezés szerint a null értékek nem szerepelnek FOR JSON kimenetben. Az Azure Data Studio a JSON-lekérdezések ajánlott lekérdezésszerkesztője, mivel automatikusan formázza a JSON-eredményeket (ahogyan az ebben a cikkben látható), ahelyett, hogy egy sima sztringet jelenítenének meg.

Példa – Ponttól elválasztott oszlopnevek

Az alábbi lekérdezés az AdventureWorks Person tábla első öt sorát formázta JSON-ként.

A FOR JSON PATH záradék az oszlop aliasát vagy oszlopnevét használja a JSON-kimenet kulcsnevének meghatározásához. Ha egy alias pontokat tartalmaz, a PATH beállítás beágyazott objektumokat hoz létre.

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"
    }
}]

Példa – Több tábla

Ha egy lekérdezésben egynél több táblára hivatkozik, FOR JSON PATH az egyes oszlopokat az aliasával fészkeli be. Az alábbi lekérdezés egy JSON-objektumot hoz létre a lekérdezéshez csatlakoztatott (OrderHeader, OrderDetails) páronként.

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
    }
}]

További információ a JSON-ról az SQL Database Engine-ben

A beépített JSON-támogatás vizuális bemutatásához tekintse meg az alábbi videókat: