如何在t-sql中为json字符串添加一个新的根元素



无论出于什么原因,我都对此感到困惑。如何在下面的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"
}
]
}

相关内容

最新更新