Udostępnij za pośrednictwem


Automatyczne formatowanie danych wyjściowych JSON przy użyciu trybu AUTOMATYCZNEGO

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (tylko bezserwerowa pula SQL)Punkt końcowy analizy SQL w Microsoft FabricMagazyn w Microsoft FabricSQL database w wersji zapoznawczej 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.

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

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

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

Example 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: