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


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

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

Чтобы удалить квадратные скобки, которые по умолчанию окружают 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

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

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