从阵列中删除元素的JSON Patch格式是什么?

时间:2014-12-12 08:55:19

标签: json-patch

我有以下JSON文档,我想从中删除" roleId2"来自"角色的元素"字段的数组值:

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

如何编写JSON补丁文档来删除该元素?以下表达式是否有效?

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

或者,它应该是这样的(因为"角色"文档中的值是一个数组)?

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

从阅读RFC 6902开始,我不清楚哪一个是正确的。 RFC提到了以下行为,但我不确定它是否与此相关。

  

如果从数组中删除元素,则上面的任何元素      指定的索引向左移动一个位置。

2 个答案:

答案 0 :(得分:8)

从数组中删除索引1处的项目的正确补丁是:

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

请参阅JSFiddle上的工作示例(使用Fast-JSON-Patch

答案 1 :(得分:2)

RFC 6902不支持此功能。正在讨论possibile revision to the JSON-Patch format,它可能支持value-based array operations