我涉足 JSON 的第 2 部分,我想将一个用户添加到多个组:将一个 JSON 数组插入到一个表中。
理想情况下,JSON 应如下所示:
'{
"Email": "[email protected]",
"Prefix":null,
"FirstName": "Worf",
"MiddleInitial": "",
"LastName": "Mogh",
"Suffix": "Son Of",
"Title" :"Commander",
"Groups": [{"0", "1", "5"}]
}'
目前,我可以像这样使用 JSON 来做到这一点:
'{
"Email": "[email protected]",
"Prefix":null,
"FirstName": "Worf",
"MiddleInitial": "",
"LastName": "Mogh",
"Suffix": "Son Of",
"Title" :"Commander",
"Groups": "1,2,3,4"
}'
然后用下面的小曲“解压”它:
declare @groups varchar(1000)
select @groups = Groups from openjson(@json)
WITH
(
Groups nvarchar(100) '$.Groups'
)
print @groups
select value from string_split(@groups, ',')
它返回一个像这样的漂亮的小表:
Value
1
2
3
4
问题这是糟糕的 JSON,Web 开发人员会取笑我。
问题如何在 SQL Server 中正确解压 JSON 数组?
我认为您对数组的 JSON 定义可能有点奇怪,您应该能够像这样解压数组:
该符号
"Groups":[{"0", "1", "5"}]
表示在一个对象中,有一个键“Groups”,它的值是一个包含单个元素的数组。该元素也是一个对象,但是 -"0", "1", "5"
在 JSON 上下文中没有意义。例如: