树形结构的json数据源,

本文介绍了一种使用Java实现的递归方法来构建JSON树结构。通过递归遍历Node对象列表,根据父节点ID与子节点ID的关系构建树形结构,并最终输出符合Extjs JSON格式要求的字符串。该方法适用于需要将层级数据转换为树形结构的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]转[/b]

package test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.baihe.entity.Node;

public class bd {

  List nodeList =new ArrayList();  
  bd(){//构造方法里初始化模拟List  
         Node node1 = new Node("01","0");    
         Node node2 = new Node("0102","01");    
         Node node3 = new Node("0103","01");    
         Node node4 = new Node("010201","0102");    
         Node node5 = new Node("010202","0102");    
       
         nodeList.add(node1);    
         nodeList.add(node2);    
         nodeList.add(node3);    
         nodeList.add(node4);    
         //nodeList.add(node5);    
        
     }  
     StringBuffer returnStr=new StringBuffer();    
     public void recursionFn(List list , Node node){    
         if(hasChild(list,node)){    
             returnStr.append("{id:");  
             returnStr.append(node.getId());  
             returnStr.append(",parentId:");  
             returnStr.append(node.getParentId());  
             returnStr.append(",children:[");    
             List childList = getChildList(list,node);    
             Iterator it = childList.iterator();    
             while(it.hasNext()){    
                 Node n = (Node)it.next();    
                 recursionFn(list,n);    
             }    
             returnStr.append("]},");    
         }else{    
             returnStr.append("{id:");  
             returnStr.append(node.getId());  
             returnStr.append(",parentId:");  
             returnStr.append(node.getParentId());  
             returnStr.append(",leaf:true},");    
         }    
             
     }    
     public boolean hasChild(List list, Node node){  //判断是否有子节点  
         return getChildList(list,node).size()>0?true:false;  
     }  
     public List getChildList(List list , Node node){  //得到子节点列表  
         List li = new ArrayList();    
         Iterator it = list.iterator();    
         while(it.hasNext()){    
             Node n = (Node)it.next();    
             if(n.getParentId().endsWith(node.getId())){    
                 li.add(n);    
             }    
         }    
         return li;    
     }  
     public String modifyStr(String returnStr){//修饰一下才能满足Extjs的Json格式  
         return ("["+returnStr+"]").replaceAll(",]", "]");  
           
     }  
     public static void main(String[] args) {    
      bd r = new bd();    
         r.recursionFn(r.nodeList, new Node("01","0"));    
         System.out.println(r.modifyStr(r.returnStr.toString()));    
     }    
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值