java解析前端传的树菜单
前端传的json
[
{
"title": "一级1",
"id": 1,
"children": [
{
"title": "二级",
"id": 3,
"children": [
{
"title": "三级1-1-3",
"id": 23
},
{
"title": "三级1-1-1",
"id": 7
},
{
"title": "三级1-1-2",
"id": 8
}
]
}
]
}
]
后台json转换实体类
private String id;
private String title;
// 子菜单
private List<VoTree> children;
后台方法
List<VoTree> voTree = new Gson().fromJson(json, new TypeToken<List<VoTree>>() {
}.getType());
List<String> list = new ArrayList<String>();
//调用getTree 得到勾选的id集合
getTree(voTree,list);
//把集合转成,号拼接的字符串
String ids = StringUtils.join(list, ",");
//调用数据库修改即可
getTree方法
private void getTree(List<VoTree> voTrees,List<String> ids) {
List<String> list = voTrees.stream().map(VoTree::getId).collect(Collectors.toList());
ids.addAll(list);
Iterator<VoTree> iterator = voTrees.iterator();
while (iterator.hasNext()) {
VoTree voTree = iterator.next();
if (voTree.getChildren().size() > 0) {
getTree(voTree.getChildren(), ids);
}
}
}