1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      樹形JSON列表怎么利用java與mysql進(jìn)行拼接

      樹形JSON列表怎么利用java與MySQL進(jìn)行拼接?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

      創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比招遠(yuǎn)網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式招遠(yuǎn)網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋招遠(yuǎn)地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

      例如:

      [
       {
       "name": "商品目錄",
       "pid": "-1",
       "id": "1",
       "children": [
        {
        "name": "日用品",
        "pid": "1",
        "id": "11",
        "children": [
         {
         "name": "洗發(fā)水",
         "pid": "11",
         "id": "111",
         "children": [
          {
           "name": "霸王",
           "pid": "111",
           "id": "1111",
           "children": []
          }
         ]
         }
        ]
        },
        {
        "name": "食品",
        "pid": "1",
        "id": "12",
        "children": []
        }
       ]
       }
      ]

      整體思路分為兩步,第一步獲取目錄及其所有子目錄,獲取后的列表形式如下:

      [
       {"id":"1","pid":"-1","name":"商品目錄"},
       {"id":"11","pid":"1","name":"日用品"},
       {"id":"12","pid":"1","name":"食品"},
       {"id":"111","pid":"11","name":"洗發(fā)水"},
       {"id":"1111","pid":"111","name":"霸王"}
      ]

      第二步,利用遞歸思想拼裝該數(shù)據(jù),拼裝方法的工具類如下:

      package *.*.*;
      
      import net.sf.json.JSONArray;
      
      import java.util.ArrayList;
      import java.util.List;
      
      /**
       * 構(gòu)造目錄JSON樹
       * Created by fukang on 2017/5/26 0026.
       */
      public class TreeBuilder {
      
       List nodes = new ArrayList<>();
      
       public String buildTree(List nodes) {
      
        TreeBuilder treeBuilder = new TreeBuilder(nodes);
      
        return treeBuilder.buildJSONTree();
       }
      
       public TreeBuilder() {
       }
      
       public TreeBuilder(List nodes) {
        super();
        this.nodes = nodes;
       }
      
       // 構(gòu)建JSON樹形結(jié)構(gòu)
       public String buildJSONTree() {
        List nodeTree = buildTree();
        JSONArray jsonArray = JSONArray.fromObject(nodeTree);
        return jsonArray.toString();
       }
      
       // 構(gòu)建樹形結(jié)構(gòu)
       public List buildTree() {
        List treeNodes = new ArrayList<>();
        List rootNodes = getRootNodes();
        for (Node rootNode : rootNodes) {
         buildChildNodes(rootNode);
         treeNodes.add(rootNode);
        }
        return treeNodes;
       }
      
       // 遞歸子節(jié)點(diǎn)
       public void buildChildNodes(Node node) {
        List children = getChildNodes(node);
        if (!children.isEmpty()) {
         for (Node child : children) {
          buildChildNodes(child);
         }
         node.setChildren(children);
        }
       }
      
       // 獲取父節(jié)點(diǎn)下所有的子節(jié)點(diǎn)
       public List getChildNodes(Node pnode) {
        List childNodes = new ArrayList<>();
        for (Node n : nodes) {
         if (pnode.getId().equals(n.getPid())) {
          childNodes.add(n);
         }
        }
        return childNodes;
       }
      
       // 判斷是否為根節(jié)點(diǎn)
       public boolean rootNode(Node node) {
        boolean isRootNode = true;
        for (Node n : nodes) {
         if (node.getPid().equals(n.getId())) {
          isRootNode = false;
          break;
         }
        }
        return isRootNode;
       }
      
       // 獲取集合中所有的根節(jié)點(diǎn)
       public List getRootNodes() {
        List rootNodes = new ArrayList<>();
        for (Node n : nodes) {
         if (rootNode(n)) {
          rootNodes.add(n);
         }
        }
        return rootNodes;
       }
      
       public static class Node {
      
        private String id;
        private String pid;
        private String name;
        private List children;
      
        public Node() {
        }
      
        public Node(String id, String pid, String name) {
         super();
         this.id = id;
         this.pid = pid;
         this.name = name;
        }
      
        public String getId() {
         return id;
        }
      
        public void setId(String id) {
         this.id = id;
        }
      
        public String getPid() {
         return pid;
        }
      
        public void setPid(String pid) {
         this.pid = pid;
        }
      
        public String getName() {
         return name;
        }
      
        public void setName(String name) {
         this.name = name;
        }
      
      
        public List getChildren() {
         return children;
        }
      
        public void setChildren(List children) {
         this.children = children;
        }
       }
      }

      在Controller中的調(diào)用方法是:

       @RequestMapping("/bulidJsonTree")
       @ResponseBody
       public String buildJsonTree(HttpServletRequest request) {
      
        // 獲取全部目錄節(jié)點(diǎn)
        List nodes = iGoodsDirSvc.getAllDirList();
      
        // 拼裝樹形json字符串
        String json = new TreeBuilder().buildTree(nodes);
      
        return json;
       }

      其中iGoodsDirSvc.getAllDirList()方法需要將取到的數(shù)據(jù)轉(zhuǎn)為Node類型:

      String hql = "select id as id,pId as pid,name as name from Directory";
      
      Query query = factory.getCurrentSession().createQuery(hql)
      .setResultTransformer(Transformers.aliasToBean(TreeBuilder.Node.class));
      
      return query.list();

      看完上述內(nèi)容,你們掌握樹形JSON列表怎么利用java與mysql進(jìn)行拼接的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


      標(biāo)題名稱:樹形JSON列表怎么利用java與mysql進(jìn)行拼接
      轉(zhuǎn)載源于:http://www.ef60e0e.cn/article/gdcsee.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        石嘴山市| 长海县| 彭州市| 南靖县| 宜宾县| 武胜县| 当雄县| 洛宁县| 调兵山市| 灯塔市| 建始县| 平舆县| 安吉县| 怀仁县| 武安市| 东阿县| 菏泽市| 金阳县| 肥乡县| 任丘市| 德钦县| 绿春县| 突泉县| 尚义县| 历史| 咸宁市| 西吉县| 越西县| 轮台县| 盐源县| 武宣县| 青铜峡市| 都江堰市| 吴旗县| 正阳县| 淮阳县| 景泰县| 小金县| 扬中市| 商洛市| 霍城县|