JSON에서 대괄호 제거 - WITHOUT_ARRAY_WRAPPER 옵션

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

FOR JSON 절의 JSON 출력을 둘러싸는 대괄호를 기본적으로 제거하려면 WITHOUT_ARRAY_WRAPPER 옵션을 지정합니다. 단일 요소가 있는 배열 대신 단일 JSON 개체를 출력으로 생성하려면 이 옵션을 단일 행 결과와 함께 사용합니다.

여러 행 결과와 함께 이 옵션을 사용하는 경우 여러 요소와 누락된 대괄호로 인해 결과 출력이 유효한 JSON이 아닙니다.

예제(단일 행 결과)

다음 예제에서는 WITHOUT_ARRAY_WRAPPER 옵션을 사용 하 고 없는 FOR JSON 절의 출력을 보여 냅니다.

쿼리

SELECT 2015 as year, 12 as month, 15 as day  
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 

WITHOUT_ARRAY_WRAPPER 옵션을 사용하여 결과

{
    "year": 2015,
    "month": 12,
    "day": 15
} 

WITHOUT_ARRAY_WRAPPER 옵션이 없는 결과(기본값)

[{
    "year": 2015,
    "month": 12,
    "day": 15
}]

예제(여러 행 결과)

다음은 WITHOUT_ARRAY_WRAPPER 옵션 유무에 관계없이 FOR JSON 절의 또 다른 예입니다. 이 예제에서는 여러 행 결과를 생성합니다. 여러 요소와 누락된 대괄호로 인해 출력이 유효한 JSON이 아닙니다.

쿼리

SELECT TOP 3 SalesOrderNumber, OrderDate, Status  
FROM Sales.SalesOrderHeader  
ORDER BY ModifiedDate  
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER 

WITHOUT_ARRAY_WRAPPER 옵션을 사용하여 결과

{
    "SalesOrderNumber": "SO43662",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43661",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43660",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
} 

WITHOUT_ARRAY_WRAPPER 옵션이 없는 결과(기본값)

[{
    "SalesOrderNumber": "SO43662",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43661",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}, {
    "SalesOrderNumber": "SO43660",
    "OrderDate": "2011-05-31T00:00:00",
    "Status": 5
}]

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

Microsoft 비디오

참고 항목

이 섹션의 일부 비디오 링크는 현재 작동하지 않을 수 있습니다. Microsoft는 이전에 Channel 9에 있던 콘텐츠를 새 플랫폼으로 마이그레이션하고 있습니다. 비디오가 새 플랫폼으로 마이그레이션되면 링크를 업데이트할 예정입니다.

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

참고 항목

FOR 절(Transact-SQL)