[英]FOR JSON in SQL Server 2016
有什么办法可以在SQL Server 2016中使用FOR JSON以以下格式返回JSON数据?
{
"draw": 1,
"recordsTotal": 57,
"recordsFiltered": 57,
"data":
[
{
"first_name": "Airi",
"last_name": "Satou",
"position": "Accountant",
"office": "Tokyo",
"start_date": "28th Nov 08",
"salary": "$162,700"
}
]
}
尝试以下查询。 但未获得所需的输出-
SELECT
1 AS draw
,100 AS recordsTotal
,10 AS recordsFiltered
,(SELECT
first_name
,last_name
,position
,office
,start_date
,salary
FROM Employees
FOR JSON PATH,ROOT('Employees'),INCLUDE_NULL_VALUES)
下面给出的查询可正确提供输出,但无法将列“ draw”,“ recordsFiltered”和“ totalRows”附加到JSON中-
SELECT
first_name
,last_name
,position
,office
,start_date
,salary
FROM Employees
FOR JSON PATH,ROOT('Employees'),INCLUDE_NULL_VALUES
这与sys.objects
作为虚拟表源应该完全相同(顺便说一句:始终尝试创建一个有效的独立示例,方法是为表提供一些数据,或者使用每个人都可以使用的一些通用系统表)
SELECT
1 AS draw
,100 AS recordsTotal
,10 AS recordsFiltered
,(
SELECT TOP 3
o.object_id
,o.name
FROM sys.objects o
FOR JSON PATH,INCLUDE_NULL_VALUES
) AS [data]
FOR JSON PATH;
内部SELECT
将创建一个对象数组,并将其称为"data"
。 外部SELECT
将所有这些放在一起。
结果
[
{
"draw":1,
"recordsTotal":100,
"recordsFiltered":10,
"data":[
{
"object_id":3,
"name":"sysrscols"
},
{
"object_id":5,
"name":"sysrowsets"
},
{
"object_id":6,
"name":"sysclones"
}
]
}
]
您可能想阅读有关WITHOUT_ARRAY_WRAPPER的信息 ,以控制数组括号...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.