import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String jsonStr = "{\"id\":\"0\",\"text\":\"我的收藏\",\"cls\":\"folder\",\"children\":[{\"id\":\"27260236332789670000\",\"text\":\"we\",\"cls\":\"folder\",\"children\":[{\"id\":\"27264047306094694000\",\"text\":\"asd\",\"leaf\":true}]},{\"id\":\"4315427192432198700\",\"text\":\"模块管理\",\"leaf\":true}]}";
JSONObject oldObj = JSONObject.fromObject(jsonStr);
String removedId = "27264047306094694000";
Test t = new Test();
JSONObject newObj = t.removeJSONObject(oldObj, removedId);
System.out.println(newObj);
}
/**
* 根据id删除JSONObject对象
* @param oldJsonObj
* @param removedJsonId
* @return
*/
public JSONObject removeJSONObject(JSONObject oldJsonObj,String removedJsonId){
JSONObject newJsonObj = null;
if(oldJsonObj == null){
return null;
}
//获取要删除的JSONObject
JSONObject removeObj = this.getRemovedJSONObject(oldJsonObj,removedJsonId);
if(removeObj == null){
return oldJsonObj;
}
String oldJsonObjStr = oldJsonObj.toString();
String removeObjStr = removeObj.toString();
//将原有JSONObject字符串中删除查询到的JSONObject字符串
String newJsonObjStr = oldJsonObjStr.replace(removeObjStr+",", "");
newJsonObjStr = newJsonObjStr.replace(removeObjStr, "");
if(newJsonObjStr == null){
return null;
}
//重新获取删除后的JSONObject
newJsonObj = JSONObject.fromObject(newJsonObjStr);
return newJsonObj;
}
/**
* 获取要删除的JSONObject
* @param jsonObj
* @param removedId
* @return
*/
private JSONObject getRemovedJSONObject(JSONObject jsonObj,String removedId){
JSONObject removeObj = null;
//获取id
String nodeId = jsonObj.getString("id");
if(removedId.equals(nodeId)){
return jsonObj;
}else{
if(!jsonObj.containsKey("children")){
return null;
}
//查询该JSONObject中的子节点
JSONArray subJsonArr = (JSONArray) jsonObj.get("children");
if(subJsonArr == null || subJsonArr.size() == 0){
return null;
}
for(Object obj : subJsonArr){
//继续递归查询
removeObj = this.getRemovedJSONObject((JSONObject)obj,removedId);
if(removeObj != null){
break;
}
}
}
return removeObj;
}
}
分享到:
相关推荐
java无序list数据,可直接汇总,可汇总并转为树形结构数据,可直接作为公用树节点工具类使用,调用汇总类可根据实际情况修改文件内Service方法使用
list父子节点转树json,大家也可以结合我的博客查看,下载以后可以直接应用 博客地址为:https://blog.csdn.net/qq_25814003/article/details/80519421
jquery 树 单选 复选 删除节点 添加节点 移动节点 json数据格式 demo
java实现树父节点递归获取树子节点 工具类,以后再项目中直接用即可
开发过程中经常会遇到json数据的处理,而单独对json数据进行增删改并不方便,尤其是Geojson文件的处理,通过对网络资料的整理总结,下面介绍Java语言方法对json数据进行读取、添加、删除与修改操作。
java构造多级树结构,支持多根节点. 运行main即可看到效果
如何正确地删除树中的结点,以避免在删除结点后程序抛出空...更多>> 本文适用于做java swing及apache wicket学习的朋友。介绍了如何定义树结点的响应事件,在wicket中如何得到选中的树结点及树结点中的数据;如何正确地...
此方法可快速循环遍历多级嵌套或树状json结构,根据传入的参数获得对应的父子节点的属性值。
java多叉树的实现:节点集合生成多叉树,单个节点添加到多叉树,深度遍历,广度遍历
3.动态添加节点/动态删除节点/动态移动节点 4.动态dom对象创建表格树 5.完美支持json格式数据,支持xml(需转换) 6.支持ajax加载节点 7.事件驱动 8.可以动态根据列内容排序 9.简化函数参数,利用{} object输入参数,风格...
在菜单File中选择Open弹出对话框,选择好路径之后,点击send按钮,会动态的改变主节点的名字~~~
主要介绍了Java使用JSONPath解析JSON完整内容详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java毕业设计——基于java的动力节点系统的设计与实现(源码+数据库).zipjava毕业设计——基于java的动力节点系统的设计与实现(源码+数据库).zipjava毕业设计——基于java的动力节点系统的设计与实现(源码+数据库)....
自己写的一个 用java代码复制树形结构数据的方法 很实用 希望对有需求的朋友给予帮助
根据java的引用特性获取树形json,避免使用递归算法 原始数据: {"id":1,"name":"树节点1","pId":0} {"id":2,"name":"树节点2","pId":1} {"id":3,"name":"树节点3","pId":1} {"id":4,"name":"树节点4","pId":2} {"id":...
动态添加树节点,链接数据库 希望对新手有所帮助
红黑树关键代码,遍历的代码可以自己写,也可以参考我的,不过里面有个队列要自己实现。
Ztree+treeTable实现 Java实现 树形菜单 树形表格 有丰富的实例 和官方开发文档,也有官方api 不懂的可以查询官方api,实现很简单,按照实例做就可以
基于JSON的树结构,拥有拖放功能,可以重新排列树。 为深度嵌套的JSON数据和webpack配置展示一些有用的树操作,以减少包大小。
VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点VB编程源代码 97拖拉树节点...