我有以下想要合并的 JSON。在我的 JSON 中,我有“kenmerken”部分,我想在其中添加更多项目。我认为这可以通过使用 JSON_MODIFY 来完成。然而,当我使用下面的语句时,它将替换项目 1、2 和 3。当我在 $.kenmerken 之前包含“append”时,它只会显示新的项目。我怎样才能将它们都包含在 kenmerken 对象中?
DECLARE @FirstJSON NVARCHAR(MAX) = N'
{
"message id": "B673A8E4-3652-4544-A02D-BA9726BD71ED",
"volgnummer": 61000233530024,
"debug": null,
"kenmerken": {
"item 1": 1,
"item 2": 1,
"item 3": 1
}
}
';
DECLARE @KenmerkenToAdd NVARCHAR(MAX) = N'
{
"Item 4": false,
"Item 5": false
}
';
SET @FirstJSON = JSON_MODIFY(
@FirstJSON,
' $.kenmerken',
JSON_QUERY(@KenmerkenToAdd)
);
SELECT @FirstJSON;
会给:
{
"message id": "B673A8E4-3652-4544-A02D-BA9726BD71ED",
"volgnummer": 61000233530024,
"debug": null,
"kenmerken": {
"Item 4": false,
"Item 5": false
}
}
我想要的地方:
{
"message id": "B673A8E4-3652-4544-A02D-BA9726BD71ED",
"volgnummer": 61000233530024,
"debug": null,
"kenmerken": {
"Item 1": 1,
"Item 2": 1,
"Item 3": 1,
"Item 4": false,
"Item 5": false
}
}
StackOverflow 上已经基本回答了这个问题。但是,需要针对您的特定用例进行修改。在这里完成小提琴,但其要点是:
key
值得注意的是,由于名称中存在空格字符,因此必须用引号引起来。请注意,其中@KenmerkenToAdd
已存在的任何键@Kenmerken
都将使用此方法覆盖原始值(尽管这与大多数 JSON 规范中的最后值胜出重复键规则一致)。遗憾的是,原始 JSON 不再经过美化,但对于 JSON 解析仍然有效。