23

我有以下 JSON 文档,我想从中删除“roles”字段的数组值中的“roleId2”元素:

{
  "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 提到了以下行为,但我不确定它是否与此处相关。

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

4

2 回答 2

15

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

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

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

于 2014-12-13T11:40:05.490 回答
10

RFC 6902不支持这一点。正在讨论对 JSON-Patch 格式的可能修订,它可能支持基于值的数组操作

于 2019-11-18T17:27:33.450 回答