Freigeben über


Automatisches Formatieren der JSON-Ausgabe im AUTO-Modus

Gilt für: SQL Server 2016 (13.x) und höhere Versionen Azure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse Analytics (nur serverlosen SQL-Pool)SQL-Analyseendpunkt in Microsoft FabricWarehouse in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Um die Ausgabe der FOR JSON Klausel automatisch basierend auf der Struktur der SELECT Anweisung zu formatieren, geben Sie die AUTO Option an.

Wenn Sie die AUTO Option angeben, wird das Format der JSON-Ausgabe automatisch basierend auf der Reihenfolge der Spalten in der SELECT-Liste und deren Quelltabellen bestimmt. Dieses Format können Sie nicht ändern.

Die Alternative besteht darin, die PATH Option zu nutzen, um die Kontrolle über die Ausgabe zu behalten.

Eine Abfrage, die die FOR JSON AUTO Option verwendet, muss über eine FROM Klausel verfügen.

Hier sind einige Beispiele für die FOR JSON-Klausel mit der option AUTO. 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.

Examples

Beispiel 1

Query

Wenn eine Abfrage nur auf eine Tabelle verweist, ähneln die Ergebnisse der FOR JSON AUTO Klausel den Ergebnissen von FOR JSON PATH. In diesem Fall erstellt FOR JSON AUTO keine geschachtelten Objekte. Der einzige Unterschied besteht darin, dass FOR JSON AUTO punktgetrennte Aliase (z. B. Info.MiddleName im folgenden Beispiel) als Schlüssel mit Punkten und nicht als geschachtelte Objekte ausgegeben werden.

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

Beispiel 2

Query

Wenn Sie Tabellen verknüpfen, werden die Spalten der ersten Tabelle als Eigenschaften des Stammobjekts generiert. Die Spalten der zweiten Tabelle werden als Eigenschaften eines geschachtelten Objekts generiert. Der Tabellenname oder Alias der zweiten Tabelle (z.B. D im folgenden Beispiel) wird als Name des geschachtelten Arrays verwendet.

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

Beispiel 3

Query
Statt FOR JSON AUTO zu verwenden, können Sie eine FOR JSON PATH-Unterabfrage in der SELECT-Anweisung schachteln, wie im folgenden Beispiel gezeigt. In diesem Beispiel wird das gleiche Ergebnis ausgegeben wie im vorherigen Beispiel.

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

Weitere Informationen zu JSON im SQL-Datenbankmodul

Eine visuelle Einführung in die integrierte JSON-Unterstützung finden Sie in den folgenden Videos: