Formatieren von Abfrageergebnisse als JSON mit FOR JSON (SQL Server)Format Query Results as JSON with FOR JSON (SQL Server)

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Formatieren Sie Abfrageergebnisse als JSON, oder exportieren Sie Daten aus SQL Server als JSON, indem Sie die FOR JSON-Klausel einer SELECT-Anweisung hinzufügen.Format query results as JSON, or export data from SQL Server as JSON, by adding the FOR JSON clause to a SELECT statement. Verwenden der FOR JSON-Klausel, um Clientanwendungen zu vereinfachen, indem Sie die Formatierung der JSON-Ausgabe von der App zu SQL ServerSQL Server delegieren.Use the FOR JSON clause to simplify client applications by delegating the formatting of JSON output from the app to SQL ServerSQL Server.

Bei Verwendung der FOR JSON -Klausel, können Sie die Struktur der JSON-Ausgabe explizit angeben, oder lassen Sie die Struktur der SELECT-Anweisung die Ausgabe bestimmen.When you use the FOR JSON clause, you can specify the structure of the JSON output explicitly, or let the structure of the SELECT statement determine the output.

  • Verwenden Sie FOR JSON PATH, um die vollständige Kontrolle über das Format der JSON-Ausgabe zu behalten.To maintain full control over the format of the JSON output, use FOR JSON PATH. Sie können Wrapper-Objekte erstellen und komplexe Eigenschaften schachteln.You can create wrapper objects and nest complex properties.

  • Verwenden Sie FOR JSON AUTO, um die JSON-Ausgabe automatisch auf Grundlage der SELECT-Anweisung zu formatieren.To format the JSON output automatically based on the structure of the SELECT statement, use FOR JSON AUTO.

Hier finden Sie ein Beispiel für eine SELECT-Anweisung mit der FOR JSON-Klausel und deren Ausgabe.Here's an example of a SELECT statement with the FOR JSON clause and its output.

FOR JSON

Option 1: Sie können die Ausgabe mit FOR JSON PATH steuernOption 1 - You control output with FOR JSON PATH

Im PATH -Modus können Sie die Punktsyntax verwenden, z.B. 'Item.Price', um geschachtelte Ausgaben zu formatieren.In PATH mode, you can use the dot syntax - for example, 'Item.Price' - to format nested output.

Hier ist eine Beispielabfrage, die den PATH -Modus mit der FOR JSON -Klausel verwendet.Here's a sample query that uses PATH mode with the FOR JSON clause. Im folgenden Beispiel wird auch die Option ROOT verwendet, um ein benanntes Stammelement anzugeben.The following example also uses the ROOT option to specify a named root element.

Flussdiagramm für FOR JSON-Ausgabe

Weitere Informationen zu FOR JSON PATHMore info about FOR JSON PATH

Ausführlichere Informationen und Beispiele finden Sie unter Format Nested JSON Output with PATH Mode (SQL Server) (Formatieren einer geschachtelten JSON-Ausgabe im PATH-Modus (SQL Server)).For more detailed info and examples, see Format Nested JSON Output with PATH Mode (SQL Server).

Weitere Informationen zu Syntax und Verwendung finden Sie unter FOR-Klausel (Transact-SQL).For syntax and usage, see FOR Clause (Transact-SQL).

Option 2: Die SELECT-Anweisung steuert die Ausgabe mit FOR JSON AUTOOption 2 - SELECT statement controls output with FOR JSON AUTO

Im AUTO -Modus bestimmt die Struktur der SELECT-Anweisung das Format der JSON-Ausgabe.In AUTO mode, the structure of the SELECT statement determines the format of the JSON output.

Nullwerte sind standardmäßig nicht in der Ausgabe enthalten.By default, null values are not included in the output. Sie können INCLUDE_NULL_VALUES dazu verwenden, dieses Verhalten zu ändern.You can use the INCLUDE_NULL_VALUES to change this behavior.

Hier ist eine Beispielabfrage, die den AUTO -Modus mit der FOR JSON -Klausel verwendet.Here's a sample query that uses AUTO mode with the FOR JSON clause.

Abfrage:Query:

SELECT name, surname  
FROM emp  
FOR JSON AUTO  

ErgebnisseResults

[{
    "name": "John"
}, {
    "name": "Jane",
    "surname": "Doe"
}]

Weitere Informationen zu FOR JSON AUTOMore info about FOR JSON AUTO

Ausführlichere Informationen und Beispiele finden Sie unter Format JSON Output Automatically with AUTO Mode (SQL Server) (Automatisches Formatieren von JSON-Ausgaben (SQL Server)).For more detailed info and examples, see Format JSON Output Automatically with AUTO Mode (SQL Server).

Weitere Informationen zu Syntax und Verwendung finden Sie unter FOR-Klausel (Transact-SQL).For syntax and usage, see FOR Clause (Transact-SQL).

Steuern der Ausgabe anderer JSON-AusgabeoptionenControl other JSON output options

Steuern Sie die Ausgabe der FOR JSON -Klausel, indem Sie die folgenden zusätzlichen Optionen verwenden.Control the output of the FOR JSON clause by using the following additional options.

Ausgabe der FOR JSON-KlauselOutput of the FOR JSON clause

Die Ausgabe der FOR JSON-Klausel besitzt die folgenden Eigenschaften:The output of the FOR JSON clause has the following characteristics:

  1. Das Resultset enthält eine einzelne Spalte.The result set contains a single column.

    • Ein kleines Resultset kann eine einzelne Zeile enthalten.A small result set may contain a single row.
    • Ein großes Resultset teilt den langen JSON-String über mehrere Zeilen auf.A large result set splits the long JSON string across multiple rows.

      • Standardmäßig verkettet SQL Server Management Studio (SSMS) die Ergebnisse in einer einzelnen Zeile, wenn die Ausgabeeinstellung Results to Grid (Ergebnisse im Raster) ist.By default, SQL Server Management Studio (SSMS) concatenates the results into a single row when the output setting is Results to Grid. Die SSMS-Statusleiste zeigt die tatsächliche Zeilenanzahl an.The SSMS status bar displays the actual row count.
      • Möglicherweise erfordern andere Clientanwendungen Code, um längere Ergebnislisten neu zu einer einzelnen gültigen JSON-Zeichenfolge zu kombinieren, indem die Inhalte mehrerer Zeilen verkettet werden.Other client applications may require code to recombine lengthy results into a single, valid JSON string by concatenating the contents of multiple rows. Ein Beispiel für diesen Code in einer C#-Anwendung finden Sie unter Use FOR JSON output in a C# client app (Verwenden der FOR JSON-Ausgabe in einer C#-Client-App).For an example of this code in a C# application, see Use FOR JSON output in a C# client app.

      Beispiel einer FOR JSON-Ausgabe

  2. Die Ergebnisse werden wie ein JSON-Objekt-Array formatiert.The results are formatted as an array of JSON objects.

    • Die Anzahl der Elemente im JSON-Array entspricht der Anzahl der Zeilen in den Ergebnissen der SELECT-Anweisung (bevor die FOR JSON-Klausel angewendet wird).The number of elements in the JSON array is equal to the number of rows in the results of the SELECT statement (before the FOR JSON clause is applied).

    • Jede Zeile in den Ergebnissen der SELECT-Anweisung (bevor die FOR JSON-Klausel angewendet wird) wird ein separates JSON-Objekt im Array.Each row in the results of the SELECT statement (before the FOR JSON clause is applied) becomes a separate JSON object in the array.

    • Jede Spalte in den Ergebnissen der SELECT-Anweisung (bevor die FOR JSON-Klausel angewendet wird) wird zu einer Eigenschaft des JSON-Objekts.Each column in the results of the SELECT statement (before the FOR JSON clause is applied) becomes a property of the JSON object.

  3. Sowohl die Namen der Spalten als auch deren Werte werden entsprechend der JSON-Syntax geschützt.Both the names of columns and their values are escaped according to JSON syntax. Weitere Informationen finden Sie unter How FOR JSON escapes special characters and control characters (SQL Server) (So maskiert FOR JSON Sonderzeichen und Steuerzeichen (SQL Server)).For more info, see How FOR JSON escapes special characters and control characters (SQL Server).

BeispielExample

Hier ist ein Beispiel, das veranschaulicht, wie die FOR JSON-Klausel die JSON-Ausgabe formatiert.Here's an example that demonstrates how the FOR JSON clause formats the JSON output.

AbfrageergebnisseQuery results

AA BB CC DD
1010 1111 1212 XX
2020 2121 2222 JY
3030 3131 3232 ZZ

JSON-AusgabeJSON output

[{
    "A": 10,
    "B": 11,
    "C": 12,
    "D": "X"
}, {
    "A": 20,
    "B": 21,
    "C": 22,
    "D": "Y"
}, {
    "A": 30,
    "B": 31,
    "C": 32,
    "D": "Z"
}] 

Weitere Informationen darüber, was Sie in der Ausgabe der FOR JSON-Klausel sehen, finden Sie in den folgenden Themen.For more info about what you see in the output of the FOR JSON clause, see the following topics.

Weitere Informationen zu JSON in SQL Server und Azure SQL-DatenbankLearn more about JSON in SQL Server and Azure SQL Database

Microsoft-BlogbeiträgeMicrosoft blog posts

Spezielle Lösungen, Anwendungsfälle und Empfehlungen finden Sie in den Blogbeiträgen über die integrierte JSON-Unterstützung in SQL-Server und in Azure SQL-Datenbank.For specific solutions, use cases, and recommendations, see these blog posts about the built-in JSON support in SQL Server and Azure SQL Database.

Microsoft-VideosMicrosoft videos

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:For a visual introduction to the built-in JSON support in SQL Server and Azure SQL Database, see the following videos:

Weitere Informationen finden Sie unterSee Also

FOR-Klausel (Transact-SQL) FOR Clause (Transact-SQL)
Use FOR JSON output in SQL Server and in client apps (SQL Server) (Verwenden der FOR JSON-Ausgabe in SQL Server und Client-Apps (SQL Server))Use FOR JSON output in SQL Server and in client apps (SQL Server)