在开发中有些情况下,json不是id,pid这种规范的树型结构,需要自己解析。自己写一个java类解析所有格式的json,可以形成树形结构:
//解析json格式 public List<CommonTreeNode> getJsonContens(String param){ List<CommonTreeNode> result=new ArrayList<CommonTreeNode>(); CommonTreeNode root_node=new CommonTreeNode(); root_node.setId(""); root_node.setName("测试"); root_node.setUpId(null); result.add(root_node); JSONObject obj=null; JsonUtils(obj,"",root_node); return result; } //循环迭代解析json public List<CommonTreeNode> JsonUtils(Object json,String paramsKey,CommonTreeNode node){ List<CommonTreeNode> result=new ArrayList<CommonTreeNode>(); String paramkey; if(json instanceof JSONArray){ JSONArray objArray = (JSONArray)json; for(int i=0;i<objArray.size();i++){ paramkey=paramsKey+"?"+i; CommonTreeNode snode=new CommonTreeNode(); buildChildTree(snode,paramkey,paramsKey,"icon_temple",String.valueOf(i),true); node.addChild(snode); JsonUtils(objArray.get(i),paramkey,snode); } }else if(json instanceof JSONObject){ JSONObject jsonObject =(JSONObject)json; for(Map.Entry<String, Object> entry:jsonObject.entrySet()){ paramkey=paramsKey+"?"+entry.getKey(); Object ochild=entry.getValue(); if(ochild instanceof JSONObject || ochild instanceof JSONArray){ CommonTreeNode snode=new CommonTreeNode(); buildChildTree(snode,paramkey,paramsKey,"icon_temple",entry.getKey(),true); node.addChild(snode); JsonUtils(entry.getValue(),paramkey,snode); }else{ CommonTreeNode snode=new CommonTreeNode(); buildChildTree(snode,paramkey,paramsKey,"icon_temple",entry.getKey(),true); node.addChild(snode); } } } return result; } //对每一层建节点 public void buildChildTree(CommonTreeNode snode,String paramkey,String paramsKey,String skin,String name,boolean nocheck){ snode.setId(paramkey); snode.setUpId(paramsKey); snode.setName(name); snode.setOpen(false); snode.setNocheck(nocheck); }