首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL JSON -将Json附加到Json

SQL JSON -将Json附加到Json
EN

Stack Overflow用户
提问于 2019-12-09 01:11:11
回答 1查看 145关注 0票数 0

我有这个json:

代码语言:javascript
运行
复制
{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}}}

如何将此json添加到key "keyvalue":

代码语言:javascript
运行
复制
"somekey": { "id" : "" }

所以我的json看起来像这样:

代码语言:javascript
运行
复制
{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}, "somekey": { "id" : "" }}}

我试过这个:

代码语言:javascript
运行
复制
SELECT JSON_MODIFY('{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}}}', 'append $', json_query(N' {"somekey": {"id" : ""}}'))
FROM PL_Table
WHERE PL_Id = 6;

但是什么都没有改变

更新

我现在有了这个:

代码语言:javascript
运行
复制
update PL_PageLayout
set PL_Json = json_modify('{

"keyvalue": {
    "obj1": {
        "id": ""
    },
    "obj2": {
        "id": ""
    },
    "obj3": {
        "id": ""
    }
}


}', 'append $.keyvalue.content', '{"id" : "ddd"}')
FROM PL_PageLayout
WHERE PL_Id = 6;

输出为:

代码语言:javascript
运行
复制
{"keyvalue": {"obj1": {"id": ""},"obj2": {"id": ""},"obj3": {"id": ""},"content":["{\"id\" : \"ddd\"}"]}}

但是

代码语言:javascript
运行
复制
"content":["{\"id\" : \"ddd\"}"] 

需要的是

代码语言:javascript
运行
复制
"content":{\"id\" : \"ddd\"}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-09 01:45:00

出现此结果的原因是,使用append可选modifier时,新值将附加到path引用的数组中。您还需要使用JSON_QUERY()来获得格式正确的JSON,因为如果值的类型是varcharnvarchar,则JSON_MODIFY会转义新值中的所有特殊字符。

您可以尝试使用以下方法,而不使用append

代码语言:javascript
运行
复制
DECLARE @json nvarchar(max) = N'{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}}}'

SELECT JSON_MODIFY(
   @json,
   '$.keyvalue.somekey',
   JSON_QUERY(N'{"id" : ""}')
)

结果:

代码语言:javascript
运行
复制
{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""},"somekey":{"id" : ""}}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59237808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档