无论出于什么原因,我都对此感到困惑。如何在下面的json中添加一个新的根元素?
{
"Test1":[{"TestValue1":"value1","TestValue2":"value2"}],
"Test2":[{"TestValue1":"value1","TestValue2":"value2"}],
"Test3":[{"TestValue1":"value1","TestValue2":"value2"}]
}
我想加上";测试4":[{"TestValue1":"value1","TestValue2":"value2"}]
我可以用openjson从sql列中读取数据,也可以用json_modify更新其中一个元素中的属性,但不知道如何添加一个完整的新元素。
谢谢你的帮助,Kevin
您可以使用JSON_MODIFY((添加它:
JSON_MODIFY(表达式、路径、newValue(
在路径中使用附加:
append-可选修饰符,指定新值应为附加到由<json路径>。
DECLARE @jsondata NVARCHAR(MAX)
SET @jsondata = '
{
"Test1":[{"TestValue1":"value1","TestValue2":"value2"}],
"Test2":[{"TestValue1":"value1","TestValue2":"value2"}],
"Test3":[{"TestValue1":"value1","TestValue2":"value2"}]
}
'
SET @jsondata = JSON_MODIFY(@jsondata, 'append $.Test4', JSON_QUERY('{"TestValue1":"value1","TestValue2":"value2"}'))
SELECT @jsondata
要避免自动转义,请使用JSON_QUERY提供newValue作用JSON_MODIFY知道JSON_MOD IFY返回的值是格式正确的JSON,因此它不会转义该值。
这会给您以下结果:
{
"Test1": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
],
"Test2": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
],
"Test3": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
],
"Test4": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
]
}