Home Java javaTutorial How to splice tree-shaped JSON lists using Java and MySQL recursive methods

How to splice tree-shaped JSON lists using Java and MySQL recursive methods

Aug 08, 2017 am 09:58 AM
javascript json

This article mainly introduces to you the method of using java+mysql recursion to implement splicing tree-shaped JSON lists. The article introduces it in great detail through sample code. It has certain reference learning value for everyone's study or work. It is needed Friends, let’s follow the editor and take a look.

Preface

This article introduces to you the relevant content about using java+mysql recursion to implement splicing tree-shaped JSON lists. Share it for your reference. Let’s learn for reference. Without further ado, let’s take a look at the detailed introduction:

When we are doing Java web projects, front-end controls such as country-province-city-district-county and other tree lists are often needed. Multi-level tree json data

For example:


##

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

[

 {

 "name": "商品目录",

 "pid": "-1",

 "id": "1",

 "children": [

  {

  "name": "日用品",

  "pid": "1",

  "id": "11",

  "children": [

   {

   "name": "洗发水",

   "pid": "11",

   "id": "111",

   "children": [

    {

     "name": "霸王",

     "pid": "111",

     "id": "1111",

     "children": []

    }

   ]

   }

  ]

  },

  {

  "name": "食品",

  "pid": "1",

  "id": "12",

  "children": []

  }

 ]

 }

]

Copy after login

The overall idea is divided into two Step, the first step is to obtain the directory and all its subdirectories. The obtained list is as follows:


1

2

3

4

5

6

7

[

 {"id":"1","pid":"-1","name":"商品目录"},

 {"id":"11","pid":"1","name":"日用品"},

 {"id":"12","pid":"1","name":"食品"},

 {"id":"111","pid":"11","name":"洗发水"},

 {"id":"1111","pid":"111","name":"霸王"}

]

Copy after login

The second step is to use recursive thinking to assemble the data. The tool class of the assembly method is as follows:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

package *.*.*;

 

import net.sf.json.JSONArray;

 

import java.util.ArrayList;

import java.util.List;

 

/**

 * 构造目录JSON树

 * Created by fukang on 2017/5/26 0026.

 */

public class TreeBuilder {

 

 List<Node> nodes = new ArrayList<>();

 

 public String buildTree(List<Node> nodes) {

 

  TreeBuilder treeBuilder = new TreeBuilder(nodes);

 

  return treeBuilder.buildJSONTree();

 }

 

 public TreeBuilder() {

 }

 

 public TreeBuilder(List<Node> nodes) {

  super();

  this.nodes = nodes;

 }

 

 // 构建JSON树形结构

 public String buildJSONTree() {

  List<Node> nodeTree = buildTree();

  JSONArray jsonArray = JSONArray.fromObject(nodeTree);

  return jsonArray.toString();

 }

 

 // 构建树形结构

 public List<Node> buildTree() {

  List<Node> treeNodes = new ArrayList<>();

  List<Node> rootNodes = getRootNodes();

  for (Node rootNode : rootNodes) {

   buildChildNodes(rootNode);

   treeNodes.add(rootNode);

  }

  return treeNodes;

 }

 

 // 递归子节点

 public void buildChildNodes(Node node) {

  List<Node> children = getChildNodes(node);

  if (!children.isEmpty()) {

   for (Node child : children) {

    buildChildNodes(child);

   }

   node.setChildren(children);

  }

 }

 

 // 获取父节点下所有的子节点

 public List<Node> getChildNodes(Node pnode) {

  List<Node> childNodes = new ArrayList<>();

  for (Node n : nodes) {

   if (pnode.getId().equals(n.getPid())) {

    childNodes.add(n);

   }

  }

  return childNodes;

 }

 

 // 判断是否为根节点

 public boolean rootNode(Node node) {

  boolean isRootNode = true;

  for (Node n : nodes) {

   if (node.getPid().equals(n.getId())) {

    isRootNode = false;

    break;

   }

  }

  return isRootNode;

 }

 

 // 获取集合中所有的根节点

 public List<Node> getRootNodes() {

  List<Node> 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<Node> 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<Node> getChildren() {

   return children;

  }

 

  public void setChildren(List<Node> children) {

   this.children = children;

  }

 }

}

Copy after login

In Controller The calling method is:

##

1

2

3

4

5

6

7

8

9

10

11

12

@RequestMapping("/bulidJsonTree")

@ResponseBody

public String buildJsonTree(HttpServletRequest request) {

 

 // 获取全部目录节点

 List<Node> nodes = iGoodsDirSvc.getAllDirList();

 

 // 拼装树形json字符串

 String json = new TreeBuilder().buildTree(nodes);

 

 return json;

}

Copy after login

The

iGoodsDirSvc.getAllDirList()

method needs to convert the obtained data into Node type :

1

2

3

4

5

6

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();

Copy after login

Summary

The above is the detailed content of How to splice tree-shaped JSON lists using Java and MySQL recursive methods. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is the difference between MySQL5.7 and MySQL8.0? What is the difference between MySQL5.7 and MySQL8.0? Feb 19, 2024 am 11:21 AM

MySQL5.7 and MySQL8.0 are two different MySQL database versions. There are some main differences between them: Performance improvements: MySQL8.0 has some performance improvements compared to MySQL5.7. These include better query optimizers, more efficient query execution plan generation, better indexing algorithms and parallel queries, etc. These improvements can improve query performance and overall system performance. JSON support: MySQL 8.0 introduces native support for JSON data type, including storage, query and indexing of JSON data. This makes processing and manipulating JSON data in MySQL more convenient and efficient. Transaction features: MySQL8.0 introduces some new transaction features, such as atomic

Performance optimization tips for converting PHP arrays to JSON Performance optimization tips for converting PHP arrays to JSON May 04, 2024 pm 06:15 PM

Performance optimization methods for converting PHP arrays to JSON include: using JSON extensions and the json_encode() function; adding the JSON_UNESCAPED_UNICODE option to avoid character escaping; using buffers to improve loop encoding performance; caching JSON encoding results; and considering using a third-party JSON encoding library.

Pandas usage tutorial: Quick start for reading JSON files Pandas usage tutorial: Quick start for reading JSON files Jan 13, 2024 am 10:15 AM

Quick Start: Pandas method of reading JSON files, specific code examples are required Introduction: In the field of data analysis and data science, Pandas is one of the important Python libraries. It provides rich functions and flexible data structures, and can easily process and analyze various data. In practical applications, we often encounter situations where we need to read JSON files. This article will introduce how to use Pandas to read JSON files, and attach specific code examples. 1. Installation of Pandas

How do annotations in the Jackson library control JSON serialization and deserialization? How do annotations in the Jackson library control JSON serialization and deserialization? May 06, 2024 pm 10:09 PM

Annotations in the Jackson library control JSON serialization and deserialization: Serialization: @JsonIgnore: Ignore the property @JsonProperty: Specify the name @JsonGetter: Use the get method @JsonSetter: Use the set method Deserialization: @JsonIgnoreProperties: Ignore the property @ JsonProperty: Specify name @JsonCreator: Use constructor @JsonDeserialize: Custom logic

Simple JavaScript Tutorial: How to Get HTTP Status Code Simple JavaScript Tutorial: How to Get HTTP Status Code Jan 05, 2024 pm 06:08 PM

JavaScript tutorial: How to get HTTP status code, specific code examples are required. Preface: In web development, data interaction with the server is often involved. When communicating with the server, we often need to obtain the returned HTTP status code to determine whether the operation is successful, and perform corresponding processing based on different status codes. This article will teach you how to use JavaScript to obtain HTTP status codes and provide some practical code examples. Using XMLHttpRequest

In-depth understanding of PHP: Implementation method of converting JSON Unicode to Chinese In-depth understanding of PHP: Implementation method of converting JSON Unicode to Chinese Mar 05, 2024 pm 02:48 PM

In-depth understanding of PHP: Implementation method of converting JSONUnicode to Chinese During development, we often encounter situations where we need to process JSON data, and Unicode encoding in JSON will cause us some problems in some scenarios, especially when Unicode needs to be converted When encoding is converted to Chinese characters. In PHP, there are some methods that can help us achieve this conversion process. A common method will be introduced below and specific code examples will be provided. First, let us first understand the Un in JSON

How to get HTTP status code in JavaScript the easy way How to get HTTP status code in JavaScript the easy way Jan 05, 2024 pm 01:37 PM

Introduction to the method of obtaining HTTP status code in JavaScript: In front-end development, we often need to deal with the interaction with the back-end interface, and HTTP status code is a very important part of it. Understanding and obtaining HTTP status codes helps us better handle the data returned by the interface. This article will introduce how to use JavaScript to obtain HTTP status codes and provide specific code examples. 1. What is HTTP status code? HTTP status code means that when the browser initiates a request to the server, the service

PHP Tutorial: How to Convert JSON Unicode to Chinese Characters PHP Tutorial: How to Convert JSON Unicode to Chinese Characters Mar 05, 2024 pm 06:36 PM

JSON (JavaScriptObjectNotation) is a lightweight data exchange format commonly used for data exchange between web applications. When processing JSON data, we often encounter Unicode-encoded Chinese characters (such as "u4e2du6587") and need to convert them into readable Chinese characters. In PHP, we can achieve this conversion through some simple methods. Next, we will detail how to convert JSONUnico

See all articles