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


JSON-kimenet automatikus formázása AUTOMATIKUS módban

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

Ha a kifejezés kimenetét FOR JSON automatikusan szeretné formázni a nyilatkozat struktúrája SELECT alapján, adja meg a AUTO beállítást.

A beállítás megadásakor AUTO a rendszer automatikusan meghatározza a JSON-kimenet formátumát a SELECT lista oszlopainak sorrendje és a forrástáblák alapján. Ezt a formátumot nem módosíthatja.

A másik lehetőség, hogy a PATH opciót használjuk a kimenet feletti vezérlés fenntartása érdekében.

A lehetőséget használó FOR JSON AUTO lekérdezésnek záradékkal FROM kell rendelkeznie.

Íme néhány példa a FOR JSON záradékra a AUTO lehetőséggel. 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.

Examples

1. példa

Query

Ha egy lekérdezés csak egy táblára hivatkozik, a FOR JSON AUTO záradék eredménye hasonló az eredményhez FOR JSON PATH. Ebben az esetben FOR JSON AUTO nem hoz létre beágyazott objektumokat. Az egyetlen különbség az, hogy FOR JSON AUTO pontokkal tagolt aliasokat ad ki (például Info.MiddleName a következő példában) pontokkal rendelkező kulcsként, nem beágyazott objektumként.

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

2. példa

Query

Táblák összekapcsolásakor az első tábla oszlopai a gyökérobjektum tulajdonságaiként jönnek létre. A második táblázat oszlopai beágyazott objektumok tulajdonságaiként jönnek létre. A beágyazott tömb neveként a második tábla táblanevét vagy aliasát (például az alábbi példában D) használja a rendszer.

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

3. példa

Query
A FOR JSON AUTO helyett a SELECT utasításba ágyazhat be egy FOR JSON PATH al-lekérdezést, ahogyan az az alábbi példában látható. Ez a példa ugyanazt az eredményt adja ki, mint az előző példában.

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

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: