1

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

我的 json 如下所示

{"Key":"Employee", "Data":[{"id": "1", "value": "Vogel"},{ "id": "2", "value": "Vogel"}]

现在我正在尝试在 Data 属性(Like IsDeleted :False)内的每个对象中添加一个新属性。

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

4

1 回答 1

3

一种可能的方法是将$.Data您的 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"}]
}
于 2018-12-28T12:14:35.983 回答