我有这个json:
{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}}}如何将此json添加到key "keyvalue":
"somekey": { "id" : "" }所以我的json看起来像这样:
{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}, "somekey": { "id" : "" }}}我试过这个:
SELECT JSON_MODIFY('{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}}}', 'append $', json_query(N' {"somekey": {"id" : ""}}'))
FROM PL_Table
WHERE PL_Id = 6;但是什么都没有改变
更新
我现在有了这个:
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;输出为:
{"keyvalue": {"obj1": {"id": ""},"obj2": {"id": ""},"obj3": {"id": ""},"content":["{\"id\" : \"ddd\"}"]}}但是
"content":["{\"id\" : \"ddd\"}"] 需要的是
"content":{\"id\" : \"ddd\"}发布于 2019-12-09 01:45:00
出现此结果的原因是,使用append可选modifier时,新值将附加到path引用的数组中。您还需要使用JSON_QUERY()来获得格式正确的JSON,因为如果值的类型是varchar或nvarchar,则JSON_MODIFY会转义新值中的所有特殊字符。
您可以尝试使用以下方法,而不使用append
DECLARE @json nvarchar(max) = N'{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""}}}'
SELECT JSON_MODIFY(
@json,
'$.keyvalue.somekey',
JSON_QUERY(N'{"id" : ""}')
)结果:
{"keyvalue": {"head": {"id": ""},"column": {"id": ""},"degrees": {"id": ""},"somekey":{"id" : ""}}}https://stackoverflow.com/questions/59237808
复制相似问题