Udostępnij za pośrednictwem


Formatowanie zagnieżdżonych danych wyjściowych JSON przy użyciu trybu PATH (SQL Server)

Dotyczy: SQL Server 2016 (13.x) i nowszych Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (tylko bezserwerowa pula SQL)

Aby mieć pełną kontrolę nad wynikiem klauzuli FOR JSON, użyj opcji PATH.

Tryb PATH umożliwia tworzenie obiektów opakowujących i zagnieżdżanie złożonych właściwości. Wyniki są formatowane jako tablica obiektów JSON.

Alternatywą jest użycie opcji AUTO do automatycznego formatowania danych wyjściowych na podstawie struktury instrukcji SELECT.

Poniżej przedstawiono kilka przykładów klauzuli FOR JSON z opcją PATH. Formatuj zagnieżdżone wyniki przy użyciu nazw kolumn rozdzielonych kropkami lub przy użyciu zagnieżdżonych zapytań, jak pokazano w poniższych przykładach. Domyślnie wartości null nie są uwzględniane w danych wyjściowych FOR JSON. usługi 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.

Przykład — nazwy kolumn rozdzielonych kropkami

Poniższe zapytanie formatuje pięć pierwszych wierszy z tabeli AdventureWorks Person jako kod JSON.

Klauzula FOR JSON PATH używa aliasu kolumny lub nazwy kolumny do określenia nazwy klucza w danych wyjściowych JSON. Jeśli alias zawiera kropki, opcja PATH tworzy zagnieżdżone obiekty.

Zapytanie

SELECT TOP 5   
       BusinessEntityID As Id,  
       FirstName, LastName,  
       Title As 'Info.Title',  
       MiddleName As 'Info.MiddleName'  
   FROM Person.Person  
   FOR JSON PATH   

Wynik

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

Przykład — wiele tabel

Jeśli odwołujesz się do więcej niż jednej tabeli w zapytaniu, FOR JSON PATH zagnieżdża każdą kolumnę przy użyciu aliasu. Następujące zapytanie tworzy jeden obiekt JSON dla pary OrderHeader, OrderDetails połączonej w zapytaniu.

Zapytanie

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   

wynik

[{
    "Order": {
        "Number": "SO43659",
        "Date": "2011-05-31T00:00:00"
    },
    "Product": {
        "Price": 2024.9940,
        "Quantity": 1
    }
}, {
    "Order": {
        "Number": "SO43659"
    },
    "Product": {
        "Price": 2024.9940
    }
}]

Dowiedz się więcej o formacie JSON w programie SQL Server i usłudze Azure SQL Database

Klipy wideo firmy Microsoft

Aby zapoznać się z wizualnym wprowadzeniem do wbudowanej obsługi kodu JSON w programie SQL Server i usłudze Azure SQL Database, zobacz następujące wideo:

Zobacz też

Klauzula FOR (Transact-SQL)