java递归嵌套json数据_java递归树状json

一、建立递归树的实体类

public class Tree implements Serializable {

/**

*

*/

private static final long serialVersionUID = 2944880335559089140L;

private String key;//节点key

private String title;//节点名称

private String parentKey;//节点父id

private String iconCls = "folder";//节点样式,默认即可

private Boolean isLeaf = true;//是否为叶子节点,true表示是叶子节点,false表示不是叶子节点

private Boolean expanded = true; //是否展开,默认true,展开

private List children;//孩子节点

/**

* @取得id的值

* @return the id

*/

public String getKey() {

return key;

}

/**

* @设置id的值

* @param id the id to set

*/

public void setKey(String key) {

this.key = key;

}

/**

* 取得title的值

*

* @return title值

*/

public String getTitle() {

return title;

}

/**

* 设定title的值

*

* @param title 设定值

*/

public void setTitle(String title) {

this.title = title;

}

/**

* @取得parentId的值

* @return the parentId

*/

public String getParentKey() {

return parentKey;

}

/**

* @设置parentId的值

* @param parentId the parentId to set

*/

public void setParentKey(String parentKey) {

this.parentKey = parentKey;

}

/**

* @取得iconCls的值

* @return the iconCls

*/

public String getIconCls() {

return iconCls;

}

/**

* @设置iconCls的值

* @param iconCls the iconCls to set

*/

public void setIconCls(String iconCls) {

this.iconCls = iconCls;

}

/**

* @取得isLeaf的值

* @return the isLeaf

*/

public Boolean getIsLeaf() {

return isLeaf;

}

/**

* @设置isLeaf的值

* @param isLeaf the isLeaf to set

*/

public void setIsLeaf(Boolean isLeaf) {

this.isLeaf = isLeaf;

}

/**

* @取得expanded的值

* @return the expanded

*/

public Boolean getExpanded() {

return expanded;

}

/**

* @设置expanded的值

* @param expanded the expanded to set

*/

public void setExpanded(Boolean expanded) {

this.expanded = expanded;

}

/**

* @取得children的值

* @return the children

*/

public List getChildren() {

return children;

}

/**

* @设置children的值

* @param children the children to set

*/

public void setChildren(List children) {

this.children = children;

}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

}

二、递归的实现类

public class TreeUtil {

/**

* 格式化list为树形list

* @param list 需要格式化的list

* @param flag true 表示全部展开,其他 表示不展开

* @param 格式化的实体对象

* @return 格式化之后的list

*/

public static List formatTree(List list, Boolean flag) {

List nodeList = new ArrayList();

for(T node1 : list){

boolean mark = false;

for(T node2 : list){

if(node1.getParentKey()!=null && node1.getParentKey().equals(node2.getKey())){

node2.setIsLeaf(false);

mark = true;

if(node2.getChildren() == null) {

node2.setChildren(new ArrayList());

}

node2.getChildren().add(node1);

if (flag) {

//默认已经全部展开

} else{

node2.setExpanded(false);

}

break;

}

}

if(!mark){

nodeList.add(node1);

if (flag) {

//默认已经全部展开

} else{

node1.setExpanded(false);

}

}

}

return nodeList;

}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

}

注:需要递归的对应的实体信息,需继承Tree类

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值