【发布时间】:2016-09-26 10:14:44
【问题描述】:
我想使用 SQL Server 2016 的 For JSON 功能获取带有整数数组的 JSON。我被整数数组难住了。
数据库表结构:
declare @Employees table (ID int, Name nvarchar(50))
insert into @Employees values
(1, 'Bob'),
(2, 'Randy')
declare @Permissions table (ID int, PermissionName nvarchar(50))
insert into @Permissions values
(1, 'Post'),
(2, 'Comment'),
(3, 'Edit'),
(4, 'Delete')
declare @EmployeePermissions table (EmployeeID int, PermissionID int)
insert into @EmployeePermissions values
(1, 1),
(1, 2),
(2, 1),
(2, 2),
(2, 3)
期望的结果:
{"EmployeePermissions": [
{"Employee":"Bob", "Permissions":[1,2]},
{"Employee":"Randy", "Permissions":[1,2,3]}
]}
这是我得到的最接近的,但不是我想要的。
select
e.Name as Employee,
(select
convert(nvarchar(10),ep.PermissionID) as PermID
from @EmployeePermissions ep
where ep.EmployeeID=e.ID
for json path) as 'Permissions'
from
@Employees e
for json path, root('EmployeePermissions')
返回:
{"EmployeePermissions": [
{"Employee":"Bob", "Permissions":[{"permID":1},{"permID":2}]},
{"Employee":"Randy", "Permissions":[{"permID":1},{"permID":2},{"permID":3}]}
]}
【问题讨论】:
-
能否分享下工作代码,有助于给出更多答案
-
使用 for permID 创建一个视图 /resultset 然后完成结果stackoverflow.com/questions/10461874/…
-
@Arulkumar - 添加了我最接近的代码。
-
如果你能忍受来自
SQL Server的有问题的输出,我建议你让消费者知道这些别名。如果您使用的是Json.NET,请查看这个出色的答案:stackoverflow.com/a/48245381/419761
标签: arrays sql-server json sql-server-2016