PATH 모드를 사용하여 중첩된 JSON 출력 서식 지정(SQL Server)

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics(서버리스 SQL 풀에만 해당)

기본 FOR JSON 절의 출력을 완전히 제어하려면 PATH 옵션을 지정합니다.

PATH 모드를 통해 래퍼 개체를 만들고 복잡한 속성을 중첩할 수 있습니다. 결과는 JSON 개체의 배열로 서식 지정됩니다.

또는 AUTO 옵션을 사용하여 SELECT 문의 구조에 따라 출력의 서식을 자동으로 지정합니다.

아래에는 PATH 옵션에서 FOR JSON 절을 사용하는 몇 가지 예가 나와 있습니다. 다음 예제와 같이 점으로 구분된 열 이름을 사용하거나 중첩된 쿼리를 사용하여 중첩된 결과의 서식을 지정합니다. 기본적으로 null 값은 FOR JSON 출력에 포함되지 않습니다. Azure Data Studio는 일반 문자열을 표시하는 대신 이 문서에 표시된 대로 JSON 결과에 서식을 자동으로 지정하므로 JSON 쿼리에 권장되는 쿼리 편집기입니다.

예 - 점으로 구분된 열 이름

다음 쿼리는 AdventureWorks 테이블의 처음 5개 행에 JSON 형식을 지정합니다 Person .

FOR JSON PATH 절은 열 별칭 또는 열 이름을 사용하여 JSON 출력의 키 이름을 결정합니다. 별칭에 점이 있는 경우 PATH 옵션은 중첩된 개체를 만듭니다.

쿼리

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

결과

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

예 - 여러 테이블

쿼리 에서 둘 이상의 테이블을 참조하는 경우 FOR JSON PATH 는 해당 별칭을 사용하여 각 열을 중첩합니다. 다음 쿼리는 쿼리에 조인된(OrderHeader, OrderDetails) 쌍당 하나의 JSON 개체를 만듭니다.

쿼리

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   

결과

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

SQL Server 및 Azure SQL Database의 JSON에 대해 자세히 알아보기

Microsoft 비디오

SQL Server 및 Azure SQL Database의 기본 제공 JSON 지원에 대한 시각적 소개는 다음 비디오를 참조하세요.

참고 항목

FOR 절(Transact-SQL)