`
ami1984
  • 浏览: 25542 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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

 
阅读更多


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递归算法构造JSON树形结构

    Java 递归算法构造 JSON 树形结构 Java 递归算法构造 JSON 树形结构是指通过 Java 语言使用递归算法将数据库中的菜单表构建成树形的 JSON 格式发送给第三方。这种方法可以将复杂的树形结构数据转换成易于理解和处理...

    java树节点逐级汇总.zip

    - 在Java中,树节点可能需要存储各种类型的数据,因此,使用泛型可以使树节点类更加灵活,能够适应多种数据类型。 8. **递归**: - 构建树形结构和执行逐级汇总通常涉及递归操作。递归函数会调用自身,以处理当前...

    java构造多级树结构,支持多根节点

    这里我们讨论如何在Java中实现一个支持多根节点的树结构,并使用ZTree(一种流行的JavaScript库)进行展示。首先,我们需要理解树的基本概念。 **树结构基础** 树是一种非线性数据结构,由节点和边组成。每个节点...

    list父子节点转树json

    list父子节点转树json,大家也可以结合我的博客查看,下载以后可以直接应用 博客地址为:https://blog.csdn.net/qq_25814003/article/details/80519421

    树父节点递归获取树子节点

    在计算机科学中,数据结构是组织和存储数据的方式,而树是一种非常常见且重要的数据结构。树形结构模拟了现实世界中的层次关系,每个节点可以有零个或多个子节点,除了根节点之外,每个节点都有一个父节点。在处理这...

    遍历多级树状json获得父子节点值

    在实际应用中,可能需要进行更复杂的操作,例如存储找到的数据、修改节点值或执行特定操作。递归遍历方法可以灵活适应这些需求,只需稍作调整即可。 在处理大型或复杂的数据结构时,性能和内存管理也是需要注意的...

    如何正确地删除目录树中的节点

    除了基本的节点删除功能外,还需要考虑相关的业务需求,比如删除节点后是否需要通知其他组件、更新数据库或执行其他特定的操作。这些都应作为整个删除流程的一部分来考虑和实现。 总之,在Java Swing和Apache ...

    Java读取json文件并对json数据进行读取、添加、删除与修改操作

    开发过程中经常会遇到json数据的处理,而单独对json数据进行增删改并不方便,尤其是Geojson文件的处理,通过对网络资料的整理总结,下面介绍Java语言方法对json数据进行读取、添加、删除与修改操作。

    java 实现动态改变树形结构中主节点的名称

    根据提供的文件信息,我们可以分析并总结出以下关于“Java实现动态改变树形结构中主节点的名称”的相关知识点: ### 一、理解树形结构 在计算机科学中,树形结构是一种常用的数据组织形式,它将数据组织成类似于树...

    java多叉树的实现和遍历输出

    在Java编程中,多叉树是一种非线性数据结构,每个节点可以有多个子节点,与二叉树(每个节点最多有两个子节点)相比,它提供了更广泛的灵活性。本篇文章将深入探讨如何在Java中实现多叉树以及其遍历方法。 首先,...

    自定义抽象语法树JSON模板

    在JSON格式中,AST通常以键值对的形式表示,其中键代表节点类型,值则包含节点的属性和子节点。 自定义AST JSON模板的创建是为了适应特定的编程语言或解析需求。例如,对于JavaScript,一个基本的AST节点可能包含...

    java 解析 json文件 java 解析 json文件

    Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...

    树形结构设计总结java demo

    树形结构在Java中也有标准库支持,例如`java.util.TreeSet`和`java.util.TreeMap`,它们基于红黑树实现,提供了高效的插入、删除和查找操作。除此之外,还有`java.awt.tree`包,用于构建图形化的树组件,适用于GUI...

    java-根据过滤条件显示树形结构

    总结一下,Java中根据过滤条件显示树形结构涉及的主要知识点有:树形数据结构的实现,自定义节点类,过滤逻辑的定义,以及使用Swing的`JTree`组件进行可视化展示。理解并掌握这些概念,可以帮助你有效地处理复杂的...

    树形表格菜单 动态添加节点/动态删除节点/动态移动节点

    3.动态添加节点/动态删除节点/动态移动节点 4.动态dom对象创建表格树 5.完美支持json格式数据,支持xml(需转换) 6.支持ajax加载节点 7.事件驱动 8.可以动态根据列内容排序 9.简化函数参数,利用{} object输入参数,风格...

    Ztree+treeTable实现 Java实现 树形菜单 树形表格

    在Java开发中,构建用户界面时,树形菜单和树形表格是常见且重要的组件,它们可以帮助用户以层次结构的方式浏览和操作数据。本篇将详细介绍如何利用Ztree和treeTable来实现这样的功能。 Ztree是一款基于JavaScript...

    java 所有的json包

    例如,你可以使用JSONObject将Java对象转换成JSON格式,或者用JSONArray存储和操作一系列JSON对象。 2. **net**: 这个模块提供网络相关的功能,比如通过HTTP或HTTPS与JSON服务进行交互。它可以帮助你发送JSON请求并...

    网页上的树节点的制作源代码,生成多个树节点

    父节点通常包含一个`<ul>`,子节点是`<li>`元素,子节点内部还可以嵌套`<ul>`以形成多级树。 2. **CSS美化**: - CSS用来设置样式,使树节点具有折叠/展开的效果,以及良好的视觉层次感。我们可以使用伪类如`:...

    Javatree java树结构

    - 删除节点:移除特定节点,可能需要调整其他节点以保持树的结构。 - 搜索节点:找到树中特定值的节点。 - 遍历:按特定顺序访问树的所有节点,常见的遍历方法有前序遍历(根-左-右)、中序遍历(左-根-右)和...

Global site tag (gtag.js) - Google Analytics