Freigeben über


Formatieren einer geschachtelten JSON-Ausgabe im PATH-Modus

Gilt für: SQL Server 2016 (13.x) und neuere Versionen Azure SQL-Datenbankazure SQL Managed InstanceAzure Synapse Analytics (nur serverloser SQL-Pool)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

Um die Kontrolle über die Ausgabe der FOR JSON-Klausel beizubehalten, geben Sie die option PATH an.

mit PATH Modus können Sie Wrapperobjekte erstellen und komplexe Eigenschaften schachteln. Die Ergebnisse werden wie ein JSON-Objekt-Array formatiert.

Alternativ können Sie die Option AUTO verwenden, um die Ausgabe automatisch basierend auf der Struktur der SELECT-Anweisung zu formatieren.

Hier sind einige Beispiele für die FOR JSON-Klausel mit der option PATH. Formatieren Sie verschachtelte Ergebnisse mit punktgetrennten Spaltennamen oder verschachtelten Abfragen, wie in den folgenden Beispielen gezeigt. Nullwerte sind standardmäßig nicht in FOR JSON Ausgabe enthalten. Azure Data Studio ist der empfohlene Abfrage-Editor für JSON-Abfragen, da hierbei die JSON-Ergebnisse (wie in diesem Artikel gezeigt) automatisch formatiert werden, anstatt dass eine flache Zeichenfolge angezeigt wird.

Beispiel – Durch Punkte getrennte Spaltennamen

Die ersten fünf Zeilen der AdventureWorks-Tabelle Person werden durch die Abfrage als JSON formatiert.

Die FOR JSON PATH Klausel verwendet den Spaltenalias oder Spaltennamen, um den Schlüsselnamen in der JSON-Ausgabe zu bestimmen. Wenn ein Alias Punkte enthält, erstellt die option PATH geschachtelte Objekte.

Abfrage

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

Ergebnis

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

Beispiel – Mehrere Tabellen

Wenn Sie in einer Abfrage auf mehr als eine Tabelle verweisen, schachtelt FOR JSON PATH jede Spalte mithilfe des Alias. Die folgende Abfrage erstellt ein JSON-Objekt pro (OrderHeader, OrderDetails) Paar, das in der Abfrage verknüpft ist.

Abfrage

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   

Ergebnis

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

Weitere Informationen zu JSON im SQL-Datenbankmodul

Eine visuelle Einführung in die JSON-Unterstützung, die in SQL Server und Azure SQL-Datenbank integriert ist, finden Sie in den folgenden Videos: