递归不太熟练,就用笨办法写的,需要有如下格式的sql格式才行,
java代码:
@RequestMapping(value = "xxxxx")
@ResponseBody
public LinkedList<LinkedHashMap> getjson() {
//拿到数据,Data为实体类,下面附有示例,获取数据直接select * from xxx;
List<Data> Data = xxxxxMapper.getData();
//第一层
String pid = "0";
LinkedList<LinkedHashMap> list = new LinkedList<>();
for (Datacity : Data) {
if(pid.equals(city.getPid())) {
LinkedHashMap<String, Object> Map = new LinkedHashMap<>();
Map.put("name", city.getName());
LinkedList<LinkedHashMap> list2 = new LinkedList<>();
Map.put("sub", list2);
list.add(Map);
//第二层
for (Data city2 : Data) {
if(city.getCid().equals(city2.getPid())) {
LinkedHashMap<String, Object> Map2 = new LinkedHashMap<>();
Map2.put("name", city2.getName());
LinkedList<LinkedHashMap> list3 = new LinkedList<>();
Map2.put("sub", list3);
list2.add(Map2);
//第三层
for (Data city3 : Data) {
if(city2.getCid().equals(city3.getPid())) {
LinkedHashMap<String, Object> Map3 = new LinkedHashMap<>();
Map3.put("name", city3.getName());
list3.add(Map3);
}
}
}
}
}
}
return list;
}
实体类格式:
public class Data {
private String name ;
private String cid;
private String pid;
@JSONField(serialize = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@JSONField(serialize = false)
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
}
mysql源数据格式:
json示例:
[{
"name": "金融服务人员",
"code": "金融服务人员",
"sub": [{
"name": "银行服务人员",
"code": "银行服务人员",
"sub": [{
"name": "银行综合柜员",
"code": "银行综合柜员"
}, {
"name": "银行信贷员",
"code": "银行信贷员"
}, {
"name": "银行客户业务员",
"code": "银行客户业务员"
}, {
"name": "银行信用卡业务员",
"code": "银行信用卡业务员"
}]
}]
}]