php json常用方法吗,利用JS操作JSON常用方法(实用,图文教程)

六、递归遍历

为了实现一些复杂功能常常需要递归遍历JSON对象,这里给出两个递归的例子,希望能给大家参考递归的写法。

1、第一个例子是递归遍历JSON,遇到数组的时候,数组中有超过一个对象,删除第一个对象之后的所有对象

举个例子,原始JSON如下:

448dba0660ca9b1318fa5508269566d0.png

期望处理后的JSON如下:

6f6c1a9eb114ac2f36be8bcac4ed0ca0.png

递归代码如下:/**

*返回处理后的 json字符串

*/

function jsonParse(jsonObj) {

distinctJson(jsonObj);

var last=JSON.stringify(jsonObj, undefined, 2);

return last;

}

/**

* 去掉 json中数组多余的项

*/

function distinctJson(obj) {

if(obj instanceof Array) {

if(obj.length > 1) { //数组中有超过一个对象,删除第一个对象之后的所有对象

obj.splice(1, (obj.length - 1));

}

distinctJson(obj[0]);

} elseif(obj instanceof Object) {

for( var index in obj){

var jsonValue = obj[index];

distinctJson(jsonValue);

}

}

}

2、第二个例子是递归查找目标节点(节点id为targetId,有且只有一个),找到后把targetChildren赋值给节点的children,

举个例子,原始JSON如下,查找的目标节点id为5:

bd09c5ff9d3e4e74e8796ba7b3cda6a2.png

targetChildren为

9383b12bd8a591a5c93338521f6c609b.png

期望最后处理的JSON结果为:

e15523695a38891203939af59e6e3fe3.png

递归代码如下:/**

* 递归查找目标节点

*/

function findTarget(obj,targetId,targetChildren){

if(obj.id==targetId){

obj.children=targetChildren;

returntrue;

}else{

if(obj.children!=null){

for(var i=0; i

var flag=findTarget(obj.children[i],targetId,targetChildren);

if(flag==true){

returntrue;

}

}

}

}

returnfalse;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值