jsonpatch所有数组元素
jsonpatch所有数组元素
以下帖子引导我评估使用jsonpatch进行json到json的转换:
该项目可以在这里找到:
https://github.com/bruth/jsonpatch-js
我目前正试图更改数组中所有元素的名称,但我不知道如何实现。我目前的尝试是:
var transformations = [{ op: 'move', from:'/hits/1/_id', path: '/hits/1/pizza'}];
这会替换掉第一个元素,但我如何进行一个"*"类型的操作呢?类似于:
var transformations = [{ op: 'move', from:'/hits/*/_id', path: '/hits/*/pizza'}];
我可以考虑对每个元素调用转换N次,但这似乎不太好。
问题的原因是jsonpatch库没有提供一次性对数组中的所有元素进行操作的功能,导致需要使用循环来逐个处理数组中的元素。解决方法是将调用apply方法的代码放在一个循环中,每次循环都为数组中的一个元素创建相应的操作对象,然后调用apply方法进行处理。
具体的解决方法如下:
for (i = 0; i < json.hits.length; i++) { var transformations = [{ op: 'move', from:'/hits/'+i+'/_id', path:'/hits/'+i+'/pizza'}]; var result = jsonpatch.apply(json,transformations); }
另外,文章中还提到了一个可能的改进点,即jsonpatch库是否可以增加通配符功能,以便一次性对数组中的所有元素进行操作。这个改进可以提高处理效率,减少代码量。