1.前言
最近项目中有一个需求,数据库中的菜单表是一个常见的id-pid结构,需要把它构建成树形的JSON格式发送给第三方,写出来之后感觉也是很简单的,核心代码只有5行,重要的是思路要明确,这里把源码分享给大家。
工程里面使用了json-lib.jar这个包,作用是将List序列化成JSON。
2.源码
package com.agileai.esb.smc.domain;
import java.util.*;
import net.sf.json.JSONArray;
public class TreeBuilder {
List<TreeBuilder.Node>nodes = newArrayList<TreeBuilder.Node>();
public TreeBuilder(List<Node> nodes) {
super();
this.nodes= nodes;
}
/**
* 构建JSON树形结构
* @return
*/
public String buildJSONTree() {
List<Node>nodeTree = buildTree();
JSONArrayjsonArray = JSONArray.fromObject(nodeTree);
return jsonArray.toString();
}
/**
* 构建树形结构
* @return
*/
public List<Node> buildTree() {
List<Node>treeNodes = newArrayList<Node>();
List<Node>rootNodes = getRootNodes();
for (Node rootNode : rootNodes) {
buildChildNodes(rootNode);