WITHOUT_ARRAY_WRAPPER オプションを使用して JSON から角かっこを削除する

適用対象: 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
}]

例 (複数行の結果)

次に、 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
}]

SQL Server と Azure SQL Database の JSON の詳細情報

Microsoft ビデオ

Note

このセクションのビデオ リンクの一部は、現時点では機能しない場合があります。 Microsoft では、以前 Channel 9 上にあったコンテンツの新しいプラットフォームへの移行作業を進めています。 ビデオが新しいプラットフォームに移行されるに従ってリンクを更新します。

SQL Server と Azure SQL Database に組み込まれている JSON のサポートの視覚的な紹介は、次のビデオをご覧ください。

参照

FOR 句 (Transact-SQL)