Поделиться через


Удаление квадратных скобок из JSON — опция WITHOUT_ARRAY_WRAPPER

Область применения: SQL Server 2016 (13.x) и более поздних версий База данных Azure SQL Управляемый экземпляр Azure SQL Azure Synapse Analytics (только бессерверный пул SQL)

Чтобы удалить квадратные скобки, которые по умолчанию окружают выходные данные JSON из предложения FOR JSON, укажите параметр WITHOUT_ARRAY_WRAPPER. Используйте этот параметр с результатом из одной строки, чтобы создать в качестве вывода единый объект JSON вместо массива с одним элементом.

При применении к многострочному результату выходные данные не будут представлять собой действительный объект JSON в связи с использованием сразу нескольких компонентов и отсутствием квадратных скобок.

Пример (однострочный результат)

В следующем примере показаны выходные данные предложения FOR JSON с параметром WITHOUT_ARRAY_WRAPPER и без него.

Запрос

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
}]

Пример (многострочный результат)

Вот ещё один пример предложения FOR JSON с и без параметра WITHOUT_ARRAY_WRAPPER. В этом примере создается результат, состоящий из нескольких строк. Выходные данные не являются допустимым объектом 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
}]

Дополнительные сведения о JSON в SQL Server и базе данных SQL Azure

Видео Майкрософт

Примечание.

Некоторые ссылки на видео в этом разделе могут не работать в данный момент. Корпорация Майкрософт переносит содержимое, которое ранее транслировалось канале Channel 9, на новую платформу. Мы будем обновлять ссылки по мере переноса видео на новую платформу.

Наглядные инструкции по встроенной поддержке JSON в SQL Server и базе данных SQL Azure см. в следующих видео.

См. также

Предложение FOR (Transact-SQL)