php json常用方法吗,利用JS操作JSON常用方法(实用,图文教程)
发布日期:2021-06-24 15:43:31 浏览次数:2 分类:技术文章

本文共 1016 字,大约阅读时间需要 3 分钟。

六、递归遍历

为了实现一些复杂功能常常需要递归遍历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;

}

转载地址:https://blog.csdn.net/weixin_33613462/article/details/116153562 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:php 推送 微信墙,HTML5服务器端推送事件 解决PHP微信墙推送问题
下一篇:php项目总体架构怎么写,系统服务化构建-项目整体框架

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月15日 08时40分36秒