• <tfoot id='f2mC7'></tfoot>

        <i id='f2mC7'><tr id='f2mC7'><dt id='f2mC7'><q id='f2mC7'><span id='f2mC7'><b id='f2mC7'><form id='f2mC7'><ins id='f2mC7'></ins><ul id='f2mC7'></ul><sub id='f2mC7'></sub></form><legend id='f2mC7'></legend><bdo id='f2mC7'><pre id='f2mC7'><center id='f2mC7'></center></pre></bdo></b><th id='f2mC7'></th></span></q></dt></tr></i><div id='f2mC7'><tfoot id='f2mC7'></tfoot><dl id='f2mC7'><fieldset id='f2mC7'></fieldset></dl></div>

        <legend id='f2mC7'><style id='f2mC7'><dir id='f2mC7'><q id='f2mC7'></q></dir></style></legend>

        <small id='f2mC7'></small><noframes id='f2mC7'>

          <bdo id='f2mC7'></bdo><ul id='f2mC7'></ul>
      1. java后端把数据转换为树,map递归生成json树,返回给前端(后台转换)

        时间:2023-12-10

              <tfoot id='vb1m0'></tfoot>
                <tbody id='vb1m0'></tbody>
              <legend id='vb1m0'><style id='vb1m0'><dir id='vb1m0'><q id='vb1m0'></q></dir></style></legend>

              <i id='vb1m0'><tr id='vb1m0'><dt id='vb1m0'><q id='vb1m0'><span id='vb1m0'><b id='vb1m0'><form id='vb1m0'><ins id='vb1m0'></ins><ul id='vb1m0'></ul><sub id='vb1m0'></sub></form><legend id='vb1m0'></legend><bdo id='vb1m0'><pre id='vb1m0'><center id='vb1m0'></center></pre></bdo></b><th id='vb1m0'></th></span></q></dt></tr></i><div id='vb1m0'><tfoot id='vb1m0'></tfoot><dl id='vb1m0'><fieldset id='vb1m0'></fieldset></dl></div>

              <small id='vb1m0'></small><noframes id='vb1m0'>

                • <bdo id='vb1m0'></bdo><ul id='vb1m0'></ul>

                  首先,需要明确一下这个过程的流程和目的:将后端获得的数据转换为树形结构,再通过递归生成 JSON 树,并返回给前端。下面我们将详细讲解这个过程。

                  1. 将数据转换为树形结构

                  首先,需要将后端的数据进行转换,变成树形结构。可以使用递归来完成这个过程。

                  具体实现方式如下:首先,定义一个树节点的类 Node,包含节点名称、节点编号、父节点编号、节点类型等属性。然后,依次遍历后端返回的数据,对于每一条数据,查找其父节点是否已存在,如果存在则添加到父节点的子节点列表中,否则先创建父节点,然后将当前节点添加到父节点的子节点列表中。最终得到一个树形结构。

                  示例:

                  假设后端返回以下数据:

                  List<Map<String, Object>> data = [
                      {id: 1, pid: 0, name: 'root', type: 1},
                      {id: 2, pid: 1, name: 'node1', type: 2},
                      {id: 3, pid: 1, name: 'node2', type: 2},
                      {id: 4, pid: 2, name: 'node1-1', type: 3},
                      {id: 5, pid: 2, name: 'node1-2', type: 3},
                      {id: 6, pid: 3, name: 'node2-1', type: 3},
                  ]
                  

                  这里我们可以看到数据中包含节点的编号、节点的父节点编号、节点的名称以及节点的类型等信息。

                  我们可以定义一个 Node 类来表示节点信息:

                  public class Node {
                      private String id;
                      private String parentId;
                      private String name;
                      private int type;
                      private List<Node> children;
                  
                      // 构造函数,getter和setter方法
                  }
                  

                  接着,我们可以编写一个递归函数,将上述数据转换为树形结构,示例代码如下:

                  public Node buildTree(List<Map<String, Object>> data, String pid) {
                      List<Node> nodeList = new ArrayList<>();
                      // 第一次遍历,将所有节点存入nodeList中
                      for (Map<String, Object> map : data) {
                          Node node = new Node();
                          node.setId(map.get("id").toString());
                          node.setParentId(map.get("pid").toString());
                          node.setName(map.get("name").toString());
                          node.setType((int) map.get("type"));
                          nodeList.add(node);
                      }
                      // 第二次遍历,将nodeList中的节点添加到对应的父节点的子节点列表中
                      for (Node node : nodeList) {
                          if (pid.equals(node.getParentId())) {
                              children.add(node);
                          } else {
                              for (Node parent : nodeList) {
                                  if (node.getParentId().equals(parent.getId())) {
                                      parent.getChildren().add(node);
                                      break;
                                  }
                              }
                          }
                      }
                      // 第三次遍历,找出根节点并返回
                      for (Node node : nodeList) {
                          if (pid.equals(node.getId())) {
                              return node;
                          }
                      }
                      return null;
                  }
                  

                  2. 递归生成 JSON 树

                  得到了树形结构后,我们需要将其转换为 JSON 格式的数据,再返回给前端。

                  用递归的方式将树形结构转换成 JSON 格式的代码示例如下:

                  public JSONObject toJSON(Node node) {
                      JSONObject jsonObject = new JSONObject();
                      jsonObject.put("id", node.getId());
                      jsonObject.put("name", node.getName());
                      jsonObject.put("type", node.getType());
                      if (node.getChildren() != null && node.getChildren().size() > 0) {
                          JSONArray jsonArray = new JSONArray();
                          for (Node child : node.getChildren()) {
                              jsonArray.add(toJSON(child));
                          }
                          jsonObject.put("children", jsonArray);
                      } else {
                          jsonObject.put("children", null);
                      }
                      return jsonObject;
                  }
                  

                  3. 最后,将 JSON 数据返回给前端

                  最后,将生成的 JSON 树返回给前端即可。可以使用 Spring Boot 等后端框架中的 REST 接口返回 JSON 数据。

                  示例:假设前端需要获取一个编号为 1 的节点的 JSON 树,则后端代码可以如下实现:

                  @GetMapping("/tree")
                  public JSONObject tree() {
                      List<Map<String, Object>> data = getDataFromDB();
                      Node root = buildTree(data, "1");
                      return toJSON(root);
                  }
                  

                  这个接口的作用是从数据库中获取数据,然后将数据转换为树形结构并返回 JSON 树,其中编号为 1 的节点作为根节点。

                  另外,需要在前端进行 AJAX 请求,获取后端生成的 JSON 树,并显示在页面上。

                  总结:

                  以上就是将后端的数据转换为树形结构,再通过递归生成 JSON 树,并返回给前端的完整攻略。需要注意的是,本文只提供了一个示例实现方法,在实际应用中,可能需要根据具体数据结构进行相应的修改。

                  上一篇:java中JSONArray互相转换List的实现 下一篇:Java8新特性Lambda表达式的一些复杂用法总结

                  相关文章

                  1. <tfoot id='ptZPW'></tfoot>
                    <legend id='ptZPW'><style id='ptZPW'><dir id='ptZPW'><q id='ptZPW'></q></dir></style></legend>
                      <bdo id='ptZPW'></bdo><ul id='ptZPW'></ul>

                  2. <i id='ptZPW'><tr id='ptZPW'><dt id='ptZPW'><q id='ptZPW'><span id='ptZPW'><b id='ptZPW'><form id='ptZPW'><ins id='ptZPW'></ins><ul id='ptZPW'></ul><sub id='ptZPW'></sub></form><legend id='ptZPW'></legend><bdo id='ptZPW'><pre id='ptZPW'><center id='ptZPW'></center></pre></bdo></b><th id='ptZPW'></th></span></q></dt></tr></i><div id='ptZPW'><tfoot id='ptZPW'></tfoot><dl id='ptZPW'><fieldset id='ptZPW'></fieldset></dl></div>

                      <small id='ptZPW'></small><noframes id='ptZPW'>