如何用JsonPatch批量更新未知长度数组的所有子数组?
JSON Patch批量更新未知长度数组的子元素方案
标准JSON Patch(RFC 6902)的JsonPointer采用精确路径定位,本身不支持通配符或批量遍历数组元素的操作,但可以通过以下两种方式实现需求:
方案一:先获取数组长度,动态生成Patch操作
- 先调用API获取目标JSON数据,提取
array1的元素数量; - 根据数量动态生成对应数量的
add操作,每个操作定位到array1中对应索引元素的subarray开头,添加"gk-new"; - 将所有操作组成一个Patch数组一次性提交。
示例生成的Patch数组(假设array1有2个元素):
[ {"op": "add", "path": "/array1/0/subarray/0", "value": "gk-new"}, {"op": "add", "path": "/array1/1/subarray/0", "value": "gk-new"} ]
方案二:使用支持扩展语法的JSON Patch实现
部分后端框架或JSON Patch库支持扩展的JsonPointer语法,允许用*作为通配符匹配数组的所有元素。这种情况下可以用单个操作完成批量更新:
[{"op": "add", "path": "/array1/*/subarray/0", "value": "gk-new"}]
注意:该通配符语法不属于RFC 6902标准,需要确认你调用的API是否支持此扩展。
内容的提问来源于stack exchange,提问作者Khanna111
相关产品推荐
相关产品推荐

