Что такое формат JSON Patch для удаления элемента из массива?

У меня есть следующий документ JSON, из которого я хочу удалить элемент "roleId2" из значения массива поля "role":

{
  "id" : 12345,
  "firstName": "SomeFirstName",
  "lastName": "SomeLastName",
  "roles":["roleId1", "roleId2", "roleId3"]
}

Как я могу написать документ JSON Patch для удаления этого элемента? Является ли следующее выражение допустимым?

{"op": "remove", "path":"/roles", "value": "roleId2"}

Или это должно выглядеть следующим образом (потому что значение ролей в документе является массивом)?

{"op": "remove", "path":"/roles", "value": ["roleId2"]}

Из прочтения RFC 6902 мне не ясно, что, если да, правильно. RFC упоминает следующее поведение, но я не уверен, уместно ли оно здесь.

При удалении элемента из массива любые элементы выше указанного индекса сдвигаются на одну позицию влево.

1 ответ

Правильный патч для удаления элемента с индексом 1 из массива:

{"op": "remove", "path": "/roles/1"}

Смотрите рабочий пример в JSFiddle (используя Fast-JSON-Patch)

Это не поддерживается RFC 6902. Редакция possibile в формате JSON-Patch обсуждается, которые могут поддерживать на основе значений операций массива.

Другие вопросы по тегам