jsonpatch所有数组元素

6 浏览
0 Comments

jsonpatch所有数组元素

以下帖子引导我评估使用jsonpatch进行json到json的转换:

JSON to JSON transformer

该项目可以在这里找到:

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次,但这似乎不太好。

0
0 Comments

问题的原因是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库是否可以增加通配符功能,以便一次性对数组中的所有元素进行操作。这个改进可以提高处理效率,减少代码量。

0