我需要从SQL Server以JSON格式返回的结果创建一个基本的字符串数组。
我想要的JSON字符串示例如下:
[
{
"person": {
"name":"Jane Bloggs",
"previousSurnames": [
"Bloggy",
"Jones"
],
"Address":"I Live Here"
}
]
它是我希望作为JSON检索的"previousSurnames“,但没有任何前面的标签……只是一个字符串列表。
当我尝试传统的方法时,它总是将db字段作为标识符(以及一些我也不想要的额外的大括号!)
[
{
"person": {
"name":"Jane Bloggs",
"previousSurnames": [
{"surname":"Bloggy"},
{"surname":"Jones"}
],
"Address":"I Live Here"
}
]
SQL Server必须能够做到这一点,因为它将简单的字符串数组识别为正确的JSON字符串,例如
select isjson('["Bloggy","Jones"]')
返回1(有效)
请帮帮忙。
发布于 2018-06-09 00:24:51
我认为您所要求的是希望以JSON字符串的形式检索previousSurnames
的值。如果是这样,那么其中一个应该是有效的。
对于单项数组,如您的示例所示:
DECLARE @json NVARCHAR(MAX) = N'[
{
"person": {
"name":"Jane Bloggs",
"previousSurnames": ["Bloggy","Jones"],
"Address":"I Live Here"
}
}
]';
SELECT JSON_QUERY(@json, '$[0].person.previousSurnames')
或者,如果您的源JSON在数组中有多个项,这应该是可行的:
DECLARE @json NVARCHAR(MAX) = N'[
{
"person": {
"name":"Jane Bloggs",
"previousSurnames": ["Bloggy","Jones"],
"Address":"I Live Here"
}
},
{
"person": {
"name":"Jane Bloggs 2",
"previousSurnames": ["Bloggy2","Jones2"],
"Address":"I Live Here"
}
}
]';
SELECT JSON_QUERY(value, '$.person.previousSurnames')
FROM OPENJSON(@json)
https://stackoverflow.com/questions/50763678
复制相似问题