3

在 JSON 补丁中,如何使用索引对同一个数组进行后续操作。例如,考虑

 var source = { colors: ['Red', 'Green', 'Blue'] };
 var target = { colors: [] }; 

补丁文档(操作)

[{"op":"remove","path":"/colors/0"},
{"op":"remove","path":"/colors/1"},
{"op":"remove","path":"/colors/2"}]

如果我考虑源的索引,上面的索引是正确的。但是,当我按顺序应用它时,索引不正确。也就是说,如果我删除第 0 和第 1 个索引,则索引 2 处没有元素。

我可以想出几种方法来处理这个问题。将数组上的所有删除操作分组,然后保留一个临时结构以在删除期间保存/操作索引的更改。或者,保持索引相对于变异值

[{"op":"remove","path":"/colors/0"},
{"op":"remove","path":"/colors/0"},
{"op":"remove","path":"/colors/0"}]

如果该操作被认为是资源的顺序突变,这是有道理的。

有没有这方面的标准。我在规范中看不到任何关于它的内容。A.4。删除数组元素

4

1 回答 1

4

这有什么标准吗

关于操作评估的部分似乎很清楚:

Evaluation of a JSON Patch document begins against a target JSON
document.  Operations are applied sequentially in the order they
appear in the array.  Each operation in the sequence is applied to
the target document; the resulting document becomes the target of the
next operation.
于 2014-04-14T00:02:45.333 回答