다음을 통해 공유


PATH 모드로 중첩 JSON 출력 서식 지정(SQL Server)

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics (서버리스 SQL 풀 한정)

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

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

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

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

예 - 점으로 구분된 열 이름

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

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 데이터베이스에서의 JSON에 대해 알아보기

Microsoft 비디오

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

참고 항목

FOR 절(Transact-SQL)