Sql server 如何在Sql server中替换JSON对象中的完整对象

Sql server 如何在Sql server中替换JSON对象中的完整对象,sql-server,sql-server-json,Sql Server,Sql Server Json,我试图修改sql中现有的json,并在数组中的每个对象中添加一个新属性 我的json如下所示 {"Key":"Employee", "Data":[{"id": "1", "value": "Vogel"},{ "id": "2", "value": "Vogel"}] 现在,我试图在数据属性中的每个对象中添加一个新属性(如IsDeleted:False) 我们是否可以在一个特定的属性中迭代每个对象,该属性本身就是一个数组,并在每个对象中添加属性。一种可能的方法是将JSON字符串的$部分数据转

我试图修改sql中现有的json,并在数组中的每个对象中添加一个新属性

我的json如下所示

{"Key":"Employee", "Data":[{"id": "1", "value": "Vogel"},{ "id": "2", "value": "Vogel"}]
现在,我试图在数据属性中的每个对象中添加一个新属性(如
IsDeleted:False


我们是否可以在一个特定的属性中迭代每个对象,该属性本身就是一个数组,并在每个对象中添加属性。

一种可能的方法是将JSON字符串的
$部分数据
转换为带有
OPENJSON()
的表,选择带有新
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"}]
}