如何替换 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"}]
}