`

数据库读取树,并处理成json格式

阅读更多

表结构:

tableName  parentTable

  A                  B

  A                  C

  B                  D

  B                  E

  C                  F

  C                  G

 

展示树:

            A

   B               C

D     E       F       G

 

 

@Controller
public class ViewLevelMetaController {
   
 private Log logger = LogFactory.getLog(this.getClass());
 private StringBuffer nodeStr=new StringBuffer();

 @Autowired
 private ViewLevelMetaService viewLevelMetaService;
 @Autowired
 private TableTreeService tableTreeService;


 @RequestMapping("/metadata/getViewLevelTableCreateInfo.do")
 public String getViewLevelTableCreateInfo(ModelMap model, String table) {
  logger.info("getViewLevelTableCreateInfo");
  
  List<treeNode> nodeList = tableTreeService.getTreeNodeList();
  //当json字符串为空时才输出,防止重复输出
  if("[]".equals(modifyStr(nodeStr.toString()))){
   getTreeNode(nodeList, new treeNode("A","A"));
  }
  
  model.put("treeNodeStr",modifyStr(nodeStr.toString()));
  
  return "metadata/main";
 }

 /**
  * 修饰一下才能满足Json格式 
  * @param nodeStr
  * @return
  */
 public String modifyStr(String nodeStr){
        return ("["+nodeStr+"]").replaceAll(",]", "]");    
    } 

 /**
  * 把树组装成json格式数据
  *     A
  * B      C
  *
  * [{tableName:'A',url:'null',children:[
  *  {tableName:'B',url:'null',children:null},
  *  {tableName:'C',url:'null',children:null}
  *  ]}]
  * 
  * @param treeNodeList
  * @param node
  */
 private void getTreeNode(List<treeNode> treeNodeList, treeNode node){
   if(hasChild(treeNodeList,node)){   
             nodeStr.append("{tableName:"); 
             nodeStr.append("'"+node.getTableName()+"'"); 
             nodeStr.append(",url:"); 
             nodeStr.append("'"+node.getUrl()+"'"); 
             nodeStr.append(",children:[");   
             List<treeNode> childNodeList = getChildList(treeNodeList,node);   
             for(treeNode childNode:childNodeList){
              getTreeNode(treeNodeList,childNode);
             }
             nodeStr.append("]},");   
         }else{   
             nodeStr.append("{tableName:"); 
             nodeStr.append("'"+node.getTableName()+"'");
             nodeStr.append(",url:"); 
             nodeStr.append("'"+node.getUrl()+"'"); 
             nodeStr.append(",children:null},"); 
         } 
 }

 /**
  * 判断是否有子节点 
  * @param list
  * @param node
  * @return
  */
 private boolean hasChild(List<treeNode> list, treeNode node){
     return getChildList(list,node).size()>0?true:false; 
  }

 /**
  * 得到子节点列表 
  * @param list
  * @param node
  * @return
  */
 private List<treeNode> getChildList(List<treeNode> list , treeNode node){ 
  List<treeNode> li = new ArrayList<treeNode>();  
     for(treeNode l:list){
      if(l.getParentTable().equals(node.getTableName())){
       li.add(l);
      }
     }
     return li;    
     } 



}

 

分享到:
评论

相关推荐

    把数据库的table表转换成json格式的字符串

    此外,当从数据库读取数据并转换为JSON时,应确保数据的安全性和完整性,例如,对敏感信息进行适当的加密或脱敏处理,以及防止SQL注入等攻击。 总之,将数据库的Table表转换成JSON格式的字符串是现代Web应用中常见...

    thinkphp5框架实现数据库读取的数据转换成json格式示例

    在本文中,我们将深入探讨如何使用ThinkPHP5框架将从数据库读取的数据转换为JSON格式。这个过程对于前端展示数据,特别是与JavaScript交互时非常关键,因为JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时...

    将数据库表转成Json格式

    将数据库中的表转成json格式,可在.net的js中直接调用json文件,也可以unity3d中通过www读取json格式的数据!

    菜谱数据库-json格式

    一个用于练习关键词搜索、分词的测试数据库,采用json格式存储,33M左右,可直接采用python等读取处理。

    php从数据库读取数据,并以json格式返回数据的方法

    在PHP中,从数据库读取数据并以JSON(JavaScript Object Notation)格式返回是一种常见的做法,特别是在Web服务和API开发中。JSON因其轻量级、易于解析和人类可读的特性,成为数据交换的首选格式。以下是一个详细的...

    idea Java 解析json文件并导入mysql数据库

    // 读取JSON数组并解析 List&lt;Record&gt; records = mapper.readValue(rootNode.findValuesAsText("array_name"), new TypeReference&lt;List&lt;Record&gt;&gt;() {}); ``` 4. **连接MySQL数据库** 使用JDBC(Java Database ...

    通过Autojs获取的学习题目Json数据库

    标题中的“通过Autojs获取的学习题目Json数据库”指的是使用Autojs这一自动化脚本工具来处理和操作学习题目的Json格式数据,并将其存储为数据库。Autojs是一款基于Android平台的JavaScript编程工具,允许用户编写...

    python3 循环读取excel文件并写入json操作

    在Python编程中,有时我们需要处理大量数据,例如从Excel文件中读取数据并将其转换成其他格式,如JSON。在给定的示例中,它演示了如何使用Python3读取多个Excel文件并将数据写入一个JSON文件。下面将详细解释这个...

    Flume 抽取MYSQL Oracle数据 JSON格式 推送Kafka

    Flume二次开发,支持抽取MYSQL Oracle数据库数据 以JSON格式推送至Kafka。 demo: sql_json.sources.sql_source.type = com.hbn.rdb.source.SQLSource sql_json.sources.sql_source.connectionurl = jdbc:oracle:...

    使用递归循环读取省市区json文件数据,并保存到数据库中

    - 读取JSON文件并解析成Python对象。 - 定义递归函数,处理每个省市区节点并保存到数据库。 - 主程序部分,调用递归函数并管理数据库连接。 5. **注意事项**: - JSON文件的结构应与数据库表结构匹配,以确保...

    序列化指定Json格式的文件,并导入数据库,生成二级联动数据格式。

    这通常涉及到读取Json文件内容,然后将其转换为编程语言中的对象。例如,在.NET框架中,我们可以使用`System.Text.Json`库来实现这个过程。以下是一个简单的C#示例: ```csharp using System.IO; using System.Text...

    读取Assets资源文件和Json解析Demo

    本教程将详细介绍如何读取`Assets`中的资源文件,并进行JSON解析。 首先,让我们理解什么是`Assets`目录。在Android工程的`src/main`目录下,有一个名为`assets`的特殊目录,开发者可以在这里放置各种类型的文件,...

    JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现

    "JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现" JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现是指将JSON复杂数据处理后的数据转换为Java对象,并将其存储到数据库中。...

    递归循环读取省市区json文件数据,并保存到数据库中(很全面)

    在IT领域,将数据从JSON文件中读取并存储到数据库是常见的操作,尤其是在处理层次结构数据时。本示例中的“递归循环读取省市区json文件数据,并保存到数据库中”是一个全面的教程,它涵盖了从JSON解析到数据库交互的...

    Spring+Servlet读取数据库返回JSON数据(源码).zip

    为了从数据库读取数据并以JSON格式返回,我们可能会有以下步骤: 1. 配置Spring的数据库连接,通常在`applicationContext.xml`或`application.properties`中设置数据源。 2. 创建一个服务类(Service),使用Spring...

    Springboot读取本地json文件工程

    1. **使用Java I/O流**:这是最基础的方法,通过`java.io`包中的`FileReader`和`BufferedReader`类,可以打开并读取JSON文件内容。例如: ```java File file = new File("src/main/resources/jsonfile.json"); ...

    USDA食品数据库JSON文件.rar

    标题 "USDA食品数据库JSON文件.rar" 涉及到的是一个有关食品数据的资源,该资源以JSON格式存储,通常用于数据处理和分析。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    Java_读写json格式的文件方法详解

    在 Java 中,读写 JSON 格式的文件主要分为三步:第一步是读取文件内容,第二步是将文件内容格式化成 JSON 对象,第三步是将 JSON 对象转换成 Java 对象。 首先,需要了解 JSON 格式的基本结构,JSON 格式由键值对...

Global site tag (gtag.js) - Google Analytics