【发布时间】:2019-07-18 12:07:32
【问题描述】:
如何将新的数组元素合并到现有的 Json 属性中? 我们的两个 json 对象看起来像这样,我们想将第二个 json 对象的项目附加到第一个 json 对象。 (查看预期结果)
有没有办法通过 JSON_MODIFY 实现这一点? 微软文档并没有真正显示将多个元素合并到现有数组中的任何示例。只有一个元素。但是我们有一个需要合并的多个元素的列表。
编辑: JSON_MODIFY(@json1, 'append $.Items', JSON_QUERY(@json2)) 似乎创建了新的数组括号,而不是将项目合并到数组中。
Json 对象 1:
DECLARE @json1 NVARCHAR(MAX) = '{
"id": 1,
"Items": [
{
"id": 1,
"name" : "Item #1"
},
{
"id": 2,
"name" : "Item #2"
}
]
}'
Json 对象 2:
DECLARE @json2 NVARCHAR(MAX)='{
"Items": [
{
"id": 3,
"name": "Item #3"
},
{
"id": 4,
"name": "Item #4"
}
]
}'
期望的结果:
{
"id": 1,
"Items": [
{
"id": 1,
"name": "Item #1"
},
{
"id": 2,
"name": "Item #2"
},
{
"id": 3,
"name": "Item #3"
},
{
"id": 4,
"name": "Item #4"
}
]
}
【问题讨论】:
-
在 JSON 中,数组是按构造排序的。从您的数据来看,您似乎并不完全需要“追加”。是对的吗?这将简化答案。