sql - 如何在 t-sql 中将新的根元素添加到 json 字符串
问题描述
无论出于何种原因,我都对此感到困惑。如何向下面的 json 添加新的根元素?
{
"Test1":[{"TestValue1":"value1","TestValue2":"value2"}],
"Test2":[{"TestValue1":"value1","TestValue2":"value2"}],
"Test3":[{"TestValue1":"value1","TestValue2":"value2"}]
}
我想添加 "Test4":[{"TestValue1":"value1","TestValue2":"value2"}]
我可以使用 openjson 从 sql 列中读取数据,并且可以使用 json_modify 更新其中一个元素中的属性,但无法弄清楚如何添加全新的元素。
感谢您的帮助,凯文
解决方案
您可以使用JSON_MODIFY()添加它:
JSON_MODIFY ( 表达式 , 路径 , newValue )
在路径中使用追加:
append - 可选修饰符,指定新值应附加到 <json path> 引用的数组中。
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_MODIFY 返回的值是格式正确的 JSON,因此它不会转义该值。
这会给你以下结果:
{
"Test1": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
],
"Test2": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
],
"Test3": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
],
"Test4": [
{
"TestValue1": "value1",
"TestValue2": "value2"
}
]
}
推荐阅读
- php - Stripe,用户无法下载他们的发票
- oracle - 创建用于计数的光标
- node.js - 获取位于特定 S3 文件夹下的对象列表
- css - 如何仅将外部 CSS 应用到特定区域
- javascript - 清除表单时出现 Vue + Vuetify 验证问题
- filter - ffmpeg - 如何在同时录制窗口应用程序时过滤视频
- python - 在点击中弃用参数别名的正确方法
- javascript - jQuery ajax async 'true' 让我的网络应用程序卡住,直到数据返回
- android - 无法在 sdk 更新站点中更新存储库
- c# - C# 更新网络适配器名称部分工作(WinReg 好,ipconfig 坏)