Удаление квадратных скобок из JSON — метод с использованием WITHOUT_ARRAY_WRAPPER
Область применения: SQL Server 2016 (13.x) и более поздних версий База данных SQL Azure Управляемый экземпляр SQL Azure 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 см. в следующих видео.
- JSON as a bridge between NoSQL and relational worlds (JSON как мост между NoSQL и реляционными решениями)