PATH 모드로 중첩 JSON 출력 서식 지정(SQL Server)Format Nested JSON Output with PATH Mode (SQL Server)

이 항목 적용 대상: 예SQL Server예Azure SQL 데이터베이스없습니다Azure SQL 데이터 웨어하우스 없습니다 병렬 데이터 웨어하우스THIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

FOR JSON 절의 출력을 완전히 제어하려면 PATH 옵션을 지정합니다.To maintain full control over the output of the FOR JSON clause, specify the PATH option.

PATH 모드를 통해 래퍼 개체를 만들고 복잡한 속성을 중첩할 수 있습니다.PATH mode lets you create wrapper objects and nest complex properties. 결과는 JSON 개체의 배열로 서식 지정됩니다.The results are formatted as an array of JSON objects.

대신 AUTO 옵션을 사용하여 SELECT 문의 구조에 따라 출력 형식을 자동으로 지정합니다.The alternative is to use the AUTO option to format the output automatically based on the structure of the SELECT statement.

아래에는 PATH 옵션에서 FOR JSON 절을 사용하는 몇 가지 예가 나와 있습니다.Here are some examples of the FOR JSON clause with the PATH option. 다음 예제에 표시된 것처럼 점으로 구분된 열 이름 또는 중첩 쿼리를 사용하여 중첩 결과를 서식 지정합니다.Format nested results by using dot-separated column names or by using nested queries, as shown in the following examples. 기본적으로 null 값은 FOR JSON 출력에 포함되지 않습니다.By default, null values are not included in FOR JSON output.

예 - 점으로 구분된 열 이름Example - Dot-separated column names

다음 쿼리는 AdventureWorks Person 테이블의 처음 5개 행을 JSON 형식으로 지정합니다.The following query formats the first five rows from the AdventureWorks Person table as JSON.

FOR JSON PATH 절은 열 별칭이나 열 이름을 사용하여 JSON 출력에서 키 이름을 확인합니다.The FOR JSON PATH clause uses the column alias or column name to determine the key name in the JSON output. 별칭에 점이 있는 경우 PATH 옵션은 중첩된 개체를 만듭니다.If an alias contains dots, the PATH option creates nested objects.

쿼리Query

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

결과Result

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

예제 - 여러 테이블Example - Multiple tables

쿼리에서 둘 이상의 테이블을 참조하는 경우 FOR JSON PATH는 해당 별칭을 사용하여 각 열을 중첩합니다.If you reference more than one table in a query, FOR JSON PATH nests each column using its alias. 다음 쿼리는 쿼리에서 조인된 (OrderHeader, OrderDetails) 쌍당 하나의 JSON 개체를 만듭니다.The following query creates one JSON object per (OrderHeader, OrderDetails) pair joined in the query.

쿼리Query

SELECT TOP 2 SalesOrderNumber AS 'Order.Number',  
        OrderDate AS 'Order.Date',  
        UnitPrice AS 'Product.Price',  
        OrderQty AS 'Product.Quantity'  
FROM Sales.SalesOrderHeader H  
   INNER JOIN Sales.SalesOrderDetail D  
     ON H.SalesOrderID = D.SalesOrderID  
FOR JSON PATH   

결과Result

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

SQL Server의 기본 제공 JSON 지원에 대한 자세한 정보Learn more about the built-in JSON support in SQL Server

많은 특정 솔루션, 사용 사례 및 권장 사항은 Microsoft 프로그램 관리자인 Jovan Popovic이 제공하는 SQL Server 및 Azure SQL Database의 기본 제공 JSON 지원에 대한 블로그 게시물을 참조하세요.For lots of specific solutions, use cases, and recommendations, see the blog posts about the built-in JSON support in SQL Server and in Azure SQL Database by Microsoft Program Manager Jovan Popovic.

관련 항목:See Also

FOR 절(Transact-SQL)FOR Clause (Transact-SQL)