T-SQL Tutorial

SQL Server FOR JSON


The FOR JSON clause in SQL Server is used to generate JSON output from a SQL query. With the FOR JSON clause, you can easily convert a SQL query result set into a JSON document that can be consumed by a client application. The JSON document can be either a nested or a flat representation of the data, depending on how the clause is used.


Example

Here's an example of using the FOR JSON clause in SQL Server:

SELECT *
FROM Sales.Orders
WHERE OrderDate >= '2022-01-01'
FOR JSON AUTO

In this example, the SELECT statement returns all rows from the Sales.Orders table where the OrderDate is greater than or equal to January 1, 2022. The FOR JSON AUTO clause specifies that the JSON output should be automatically generated, with nested objects and arrays representing the relationships between the tables.


The resulting JSON output might look something like this:

[{
"OrderID": 10001,
"CustomerID": "ALFKI",
"OrderDate": "2022-01-03T00:00:00",
"TotalAmount": 1000.00,
"OrderDetails": [
{"OrderDetailID": 1, "ProductID": 10, "UnitPrice": 50.00, "Quantity": 10},
{"OrderDetailID": 2, "ProductID": 20, "UnitPrice": 75.00, "Quantity": 5}
]
},
{
"OrderID": 10002,
"CustomerID": "BLAUS",
"OrderDate": "2022-02-01T00:00:00",
"TotalAmount": 500.00,
"OrderDetails": [
{
"OrderDetailID": 3,
"ProductID": 30,
"UnitPrice": 25.00,
"Quantity": 20
}
]
}
]

As you can see, the resulting JSON output includes nested objects and arrays, representing the relationships between the tables in the original query. This makes it easy to consume the data in a client application using a JSON parser.

There are several options you can use with the FOR JSON clause to control the format of the JSON output, including specifying the root element name, using different modes for generating nested objects and arrays, and formatting the JSON output for readability. By using the FOR JSON clause, you can easily generate JSON output from a SQL query, making it easier to integrate SQL Server with web applications and APIs.