使用JSON Patch移除数组多个元素的正确语法是什么?
问题
假设我有如下实体:
{ "list": ["foo", "qux", "bar"] }
若我想使用包含两个操作的单个JSON Patch移除"foo"和"bar",正确的语法是什么?
选项1
该选项假设操作执行时索引保持不变。
[ { "op": "remove", "path": "/list/0" }, // 移除 "foo" { "op": "remove", "path": "/list/2" } // 使用原索引移除 "bar" ]
选项2
该选项假设第一个操作执行后索引会发生偏移。
[ { "op": "remove", "path": "/list/0" }, // 移除 "foo" { "op": "remove", "path": "/list/1" } // 使用新索引移除 "bar" ]
选项3
该选项考虑到可能出现意外行为并做了防护。
[ { "op": "remove", "path": "/list/2" }, // 先移除 "bar",避免索引偏移影响 { "op": "remove", "path": "/list/0" } // 移除 "foo" ]
选项3是最安全的选择,我主要好奇哪种才是正确的。JSON Patch的RFC文档对此并未明确说明。
内容的提问来源于stack exchange,提问作者gislikonrad
相关产品推荐
相关产品推荐

