java 删除树节点 ,树以json形式存储(备忘)

importnet.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class Test {

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

//TODOAuto-generatedmethodstub

StringjsonStr="{\"id\":\"0\",\"text\":\"我的收藏\",\"cls\":\"folder\",\"children\":[{\"id\":\"27260236332789670000\",\"text\":\"we\",\"cls\":\"folder\",\"children\":[{\"id\":\"27264047306094694000\",\"text\":\"asd\",\"leaf\":true}]},{\"id\":\"4315427192432198700\",\"text\":\"模块管理\",\"leaf\":true}]}";

JSONObjectoldObj=JSONObject.fromObject(jsonStr);

Stringremovedid="27264047306094694000";

Testt=newTest();

JSONObjectnewObj=t.removeJSONObject(oldObj,removedId);

System.out.println(newObj);

}

/**

*根据id删除JSONObject对象

*@paramoldJsonObj

*@paramremovedJsonId

*@return

*/

publicJSONObjectremoveJSONObject(JSONObjectoldJsonObj,StringremovedJsonId){

JSONObjectnewJsonObj=null;

if(oldJsonObj==null){

returnnull;

}

//获取要删除的JSONObject

JSONObjectremoveObj=this.getRemovedJSONObject(oldJsonObj,removedJsonId);

if(removeObj==null){

returnoldJsonObj;

}

StringoldJsonObjStr=oldJsonObj.toString();

String removeObjStr = removeObj.toString();

//将原有JSONObject字符串中删除查询到的JSONObject字符串

StringnewJsonObjStr=oldJsonObjStr.replace(removeObjStr+",","");

newJsonObjStr=newJsonObjStr.replace(removeObjStr,"");

if(newJsonObjStr==null){

returnnull;

}

//重新获取删除后的JSONObject

newJsonObj=JSONObject.fromObject(newJsonObjStr);

returnnewJsonObj;

}

/**

*获取要删除的JSONObject

*@paramjsonObj

*@paramremovedId

*@return

*/

privateJSONObjectgetRemovedJSONObject(JSONObjectjsonObj,StringremovedId){

JSONObjectremoveObj=null;

//获取id

StringnodeId=jsonObj.getString("id");

if(removedId.equals(nodeId)){

returnjsonObj;

}else{

if(!jsonObj.containsKey("children")){

returnnull;

}

//查询该JSONObject中的子节点

JSONArraysubJsonArr=(JSONArray)jsonObj.get("children");

if(subJsonArr==null||subJsonArr.size()==0){

returnnull;

}

for(Objectobj:subJsonArr){

//继续递归查询

removeObj=this.getRemovedJSONObject((JSONObject)obj,removedId);

if(removeObj!=null){

break;

}

}

}

returnremoveObj;

}

}

相关推荐