Как заменить полный объект в JSON Object на сервере Sql - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь изменить существующий JSON в SQL и добавив новое свойство в каждом объекте в массиве.

Мой json такой, как указано ниже

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

Теперь я пытаюсь добавить новое свойство в каждый объект в свойстве Data (например, IsDeleted :False).

Можем ли мы выполнить итерацию каждого объекта внутри определенного свойства, которое само по себе является массивом, и добавить свойство в каждый объект.

1 Ответ

0 голосов
/ 28 декабря 2018

Один из возможных подходов - преобразовать $.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"}]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...