ROOT オプションを使用して JSON 出力にルート ノードを追加する (SQL Server)
適用対象: SQL Server 2016 (13.x) 以降 Azure SQL データベース Azure SQL Managed Instance Azure Synapse Analytics (サーバーレスの SQL プールのみ)
FOR JSON 句の JSON 出力に最上位の単一要素を追加するには、 ROOT オプションを指定します。
ROOT オプションを指定しないと、JSON 出力にルート要素が含まれません。
例
次の表に、 ROOT オプションを指定した場合と指定しなかった場合の FOR JSON 句の出力例を示します。
次の表の例では、追加の RootName 引数が空であると想定しています。 ルート要素に名前を指定すると、例の root の値がこの値に置き換わります。
ROOT オプションを指定しなかった場合
{
<<json properties>>
}
[
<<json array elements>>
]
ROOT オプションを指定した場合
{
"root": {
<<json properties>>
}
}
{
"root": [
<< json array elements >>
]
}
次に、 FOR JSON 句で ROOT オプションを指定した別の例を示します。 この例では、追加の RootName 引数に値を指定します。
クエリ
SELECT TOP 5
BusinessEntityID As Id,
FirstName, LastName,
Title As 'Info.Title',
MiddleName As 'Info.MiddleName'
FROM Person.Person
FOR JSON PATH, ROOT('info')
結果
{
"info": [{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sánchez",
"Info": {
"MiddleName": "J"
}
}, {
"Id": 2,
"FirstName": "Terri",
"LastName": "Duffy",
"Info": {
"MiddleName": "Lee"
}
}, {
"Id": 3,
"FirstName": "Roberto",
"LastName": "Tamburello"
}, {
"Id": 4,
"FirstName": "Rob",
"LastName": "Walters"
}, {
"Id": 5,
"FirstName": "Gail",
"LastName": "Erickson",
"Info": {
"Title": "Ms.",
"MiddleName": "A"
}
}]
}
結果 (root 指定なし)
[{
"Id": 1,
"FirstName": "Ken",
"LastName": "Sánchez",
"Info": {
"MiddleName": "J"
}
}, {
"Id": 2,
"FirstName": "Terri",
"LastName": "Duffy",
"Info": {
"MiddleName": "Lee"
}
}, {
"Id": 3,
"FirstName": "Roberto",
"LastName": "Tamburello"
}, {
"Id": 4,
"FirstName": "Rob",
"LastName": "Walters"
}, {
"Id": 5,
"FirstName": "Gail",
"LastName": "Erickson",
"Info": {
"Title": "Ms.",
"MiddleName": "A"
}
}]
SQL Server と Azure SQL Database の JSON の詳細情報
Microsoft ビデオ
Note
このセクションのビデオ リンクの一部は、現時点では機能しない場合があります。 Microsoft では、以前 Channel 9 上にあったコンテンツの新しいプラットフォームへの移行作業を進めています。 ビデオが新しいプラットフォームに移行されるに従ってリンクを更新します。
SQL Server と Azure SQL Database に組み込まれている JSON のサポートの視覚的な紹介は、次のビデオをご覧ください。