다음을 통해 공유


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

적용 대상: SQL Server 2016(13.x) 이상 Azure SQL 데이터베이스 Azure SQL Managed Instance Azure 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 데이터베이스에서의 JSON에 대해 알아보기

Microsoft 비디오

참고 항목

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

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

참고 항목

FOR 절(Transact-SQL)