然后在Java controller 重新封装到Map
Map<String,Object> result=new HashMap<>();//返回的结果存放
Map<String,Object> dataObj=new HashMap<>();//用于存放data
Map<String,Object> message=new HashMap<>();//用于存放Message 包含 data children子map
List<Map<String,Object>> children=new ArrayList<Map<String,Object>>();
for(Map<String,Object> dataMap : datas){
dataObj.put("id",dataMap.get("id"));//ID
dataObj.put("created",dataMap.get("created"));//创建时间
dataObj.put("source",dataMap.get("source")==null ? "" : dataMap.get("source"));//依据来源
dataObj.put("severity",dataMap.get("severity")==null ? "" : dataMap.get("severity"));//警示等级
dataObj.put("message",dataMap.get("message")==null ? "" : dataMap.get("message"));//药品内容
dataObj.put("advice",dataMap.get("advice")==null ? "" : dataMap.get("advice"));//药品建议
dataObj.put("label",dataMap.get("label"));//名称
dataObj.put("description",dataMap.get("description")==null ? "" : dataMap.get("description"));//描述
dataObj.put("drugName",dataMap.get("drugName")==null ? "" : dataMap.get("drugName"));//药品名称
dataObj.put("leftType",dataMap.get("lefttype")==null ? "" : dataMap.get("lefttype"));//左侧表达式
dataObj.put("type",dataMap.get("type")==null ? "" : dataMap.get("type"));//表达式类型
dataObj.put("RightExpr",dataMap.get("rightexpr")==null ? "" : dataMap.get("rightexpr"));//右侧表达式
dataObj.put("exprName",dataMap.get("exprname")==null ? "" : dataMap.get("exprname"));//表达式名称
dataObj.put("expr",dataMap.get("expr")==null ? "" : dataMap.get("expr"));//表达式
dataObj.put("express",dataMap.get("express")==null ? "" : dataMap.get("express"));//表达式全称
dataObj.put("attrName",dataMap.get("attrname")==null ? "" : dataMap.get("attrname"));//属性名称
dataObj.put("isEnabled",dataMap.get("isenabled")==null ? "" : dataMap.get("isenabled"));//是否启用
dataObj.put("applyRange",dataMap.get("applyrange")==null ? "" : dataMap.get("applyrange"));//适用范围
dataObj.put("applyObject",dataMap.get("applyObject")==null ? "" : dataMap.get("applyObject"));//适用对象
dataObj.put("analysisType",dataMap.get("analysisType")==null ? "" : dataMap.get("analysisType"));//分析类型
dataObj.put("analysisResultType",dataMap.get("analysisResultType")==null ? "" : dataMap.get("analysisResultType"));//提示类型
dataObj.put("sourceId",dataMap.get("sourceid")==null ? "" : dataMap.get("sourceid"));//来源ID
dataObj.put("errorType",dataMap.get("errortype")==null ? "" : dataMap.get("errortype"));//错误类型
dataObj.put("origMessageIds",dataMap.get("origMessageIds")==null ? "" : dataMap.get("origMessageIds"));//错误类型ID
dataObj.put("leftValue",dataMap.get("leftValue")==null ? "" : dataMap.get("leftValue"));//左表达式值
dataObj.put("leftUnit",dataMap.get("leftUnit")==null ? "" : dataMap.get("leftUnit"));//左表达式单位
dataObj.put("rightValue",dataMap.get("rightValue")==null ? "" : dataMap.get("rightValue"));//右表达式值
dataObj.put("rightUnit",dataMap.get("rightUnit")==null ? "" : dataMap.get("rightUnit"));//右表达式单位
dataObj.put("checkid",dataMap.get("checkid")==null ? "" : dataMap.get("checkid"));//图形检查字段
dataObj.put("graph",dataMap.get("graph")==null ? "" : dataMap.get("graph"));//图形脑图类型
dataObj.put("text",dataMap.get("label")==null ? "" : dataMap.get("label"));//名称
message.put("data",dataObj);
//message.put("children",getChildren((String)dataMap.get("id")));
message.put("children",ruleGraphService.getChildren((String)dataMap.get("id")));
//message.put("children",ruleGraphService.getNewChildrenList(datas,(String)dataMap.get("id")));
}
result.put("Success",true);
result.put("Message",message);
return result;
private List<JSONObject> generateOrgMapToTree(List<JSONObject> orgMaps, String pid) {
List<JSONObject> orgList = new ArrayList<>();
if (orgMaps != null && orgMaps.size() > 0) {
for (JSONObject item : orgMaps) {
//比较传入pid与当前对象pid是否相等
if (pid.equals(item.get("pid"))) {
//将当前对象id做为pid递归调用当前方法,获取下级结果
List<JSONObject> children = generateOrgMapToTree(orgMaps, item.getString("id"));
//将子结果集存入当前对象的children字段中
item.put("children", children);
//添加当前对象到主结果集中
orgList.add(item);
}
}
}
return orgList;
}
public static void main(String[] args) {
List<JSONObject> list = new ArrayList<>();
JSONObject j1= new JSONObject();
j1.put("id","sss");
j1.put("pid","456ad");
list.add(j1);
JSONObject j2= new JSONObject();
j2.put("id","ddd");
j2.put("pid","sss");
list.add(j2);
JSONObject j3= new JSONObject();
j3.put("id","ddd1");
j3.put("pid","sss");
list.add(j3);
JSONObject j4= new JSONObject();
j4.put("id","ddd12");
j4.put("pid","ddd");
list.add(j4);
JSONObject j5= new JSONObject();
j5.put("id","ddd13");
j5.put("pid","ddd");
list.add(j5);
JSONObject j6= new JSONObject();
j6.put("id","ddd2");
j6.put("pid","ddd1");
list.add(j6);
JSONObject j7= new JSONObject();
j7.put("id","ddd3");
j7.put("pid","ddd1");
list.add(j7);
//这里逻辑是先拿到父节点,再去查询子节点
List<JSONObject> list1 = new test().generateOrgMapToTree(list, j1.getString("id"));
j1.put("children",list1);
System.out.println(j1.toString());
}
可以直接运行的代码。有用记得点赞和采纳,谢谢