如何替换 JSON 中的完整对象 Sql 服务器中的对象
How to replace complete object within JSON Object in Sql server
我正在尝试修改 sql 中的现有 json 并在数组中的每个对象中添加一个新的 属性。
我的json如下
{"Key":"Employee", "Data":[{"id": "1", "value": "Vogel"},{ "id": "2", "value": "Vogel"}]
现在我正尝试在 Data 属性(如 IsDeleted :False
)内的每个对象中添加一个新的 属性。
我们能否在一个本身就是数组的特定 属性 中迭代每个对象,然后在每个对象中添加 属性。
一种可能的方法是将 JSON 字符串的 $.Data
部分转换为 table 和 OPENJSON()
,SELECT 行和新的 isDeleted
列为JSON并修改原来的JSON:
DECLARE @json nvarchar(max)
SET @json = N'
{
"Key": "Employee",
"Data": [
{"id": "1", "value": "Vogel"},
{"id": "2", "value": "Vogel"}
]
}';
SELECT @json = JSON_MODIFY(
@json,
'$.Data',
(
SELECT items.[id], items.[value], 'False' AS [isDeleted]
FROM OPENJSON(JSON_QUERY(@json, '$.Data'))
WITH (
[id] nvarchar(10),
[value] nvarchar(100)
) AS items
FOR JSON PATH
)
)
输出:
{
"Key": "Employee",
"Data": [{"id":"1","value":"Vogel","isDeleted":"False"},{"id":"2","value":"Vogel","isDeleted":"False"}]
}
我正在尝试修改 sql 中的现有 json 并在数组中的每个对象中添加一个新的 属性。
我的json如下
{"Key":"Employee", "Data":[{"id": "1", "value": "Vogel"},{ "id": "2", "value": "Vogel"}]
现在我正尝试在 Data 属性(如 IsDeleted :False
)内的每个对象中添加一个新的 属性。
我们能否在一个本身就是数组的特定 属性 中迭代每个对象,然后在每个对象中添加 属性。
一种可能的方法是将 JSON 字符串的 $.Data
部分转换为 table 和 OPENJSON()
,SELECT 行和新的 isDeleted
列为JSON并修改原来的JSON:
DECLARE @json nvarchar(max)
SET @json = N'
{
"Key": "Employee",
"Data": [
{"id": "1", "value": "Vogel"},
{"id": "2", "value": "Vogel"}
]
}';
SELECT @json = JSON_MODIFY(
@json,
'$.Data',
(
SELECT items.[id], items.[value], 'False' AS [isDeleted]
FROM OPENJSON(JSON_QUERY(@json, '$.Data'))
WITH (
[id] nvarchar(10),
[value] nvarchar(100)
) AS items
FOR JSON PATH
)
)
输出:
{
"Key": "Employee",
"Data": [{"id":"1","value":"Vogel","isDeleted":"False"},{"id":"2","value":"Vogel","isDeleted":"False"}]
}