Sdílet prostřednictvím


Automatické formátování výstupu JSON pomocí automatického režimu

Platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (pouze bezserverový fond SQL)Koncový bod analýzy SQL ve službě Microsoft FabricSklad v Microsoft FabricSQL databáze v Microsoft Fabric

Pokud chcete naformátovat výstup FOR JSON klauzule automaticky na základě struktury SELECT příkazu, zadejte AUTO možnost.

Při zadání AUTO možnosti se formát výstupu JSON automaticky určí na základě pořadí sloupců v seznamu SELECT a jejich zdrojových tabulek. Tento formát nelze změnit.

Alternativou PATH je použití možnosti zachovat kontrolu nad výstupem.

Dotaz, který používá možnost FOR JSON AUTO , musí mít klauzuli FROM .

Tady je několik příkladů FOR JSON klauzule s AUTO možností. Azure Data Studio je doporučeným editorem dotazů pro dotazy JSON, protože automaticky formátuje výsledky JSON (jak je vidět v tomto článku) místo zobrazení plochého řetězce.

Examples

Příklad 1

Query

Pokud dotaz odkazuje pouze na jednu tabulku, výsledky FOR JSON AUTO klauzule jsou podobné výsledkům FOR JSON PATH. V tomto případě FOR JSON AUTO nevytvoří vnořené objekty. Jediným rozdílem je, že FOR JSON AUTO výstup aliasů oddělených tečkami (například Info.MiddleName v následujícím příkladu) používá klíče s tečkami, nikoli vnořené objekty.

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

Příklad 2

Query

Při spojení tabulek se sloupce v první tabulce vygenerují jako vlastnosti kořenového objektu. Sloupce ve druhé tabulce se generují jako vlastnosti vnořeného objektu. Název tabulky nebo alias druhé tabulky (například D v následujícím příkladu) se používá jako název vnořeného pole.

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

Příklad 3

Query
Místo použití klauzule FOR JSON AUTO můžete vnořit poddotaz FOR JSON PATH do příkazu SELECT, jak je znázorněno v následujícím příkladu. Tento příklad vypíše stejný výsledek jako předchozí příklad.

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

Další informace o formátu JSON v databázovém stroji SQL

Vizuální úvod k integrované podpoře JSON najdete v následujících videích: