后台如何拼接easyUI tree格式的 json数据 构建动态树
来源:互联网 发布:ld3320语音识别算法 编辑:程序博客网 时间:2024/06/05 15:21
1.首先,对应easyuiapi创建一个EasyUITree的实体对象
/** * 封装easyUI树的节点信息 * @author peis * */public class EasyUITree { //节点ID,对加载远程数据很重要。 private String id; //显示节点文本 private String text; //节点状态,'open' 或 'closed',默认:'open'。如果为'closed'的时候,将不自动展开该节点。 private String state; //表示该节点是否被选中。 private boolean checked; //被添加到节点的自定义属性。 private JsonElement attributes; //一个节点数组声明了若干节点。 private List<EasyUITree> children = new ArrayList<EasyUITree>(); public String getId() { return id; } public void setId(String id) { this.id = id; } public String getText() { return text; } public void setText(String text) { this.text = text; } public String getState() { return state; } public void setState(String state) { this.state = state; } public boolean isChecked() { return checked; } public void setChecked(boolean checked) { this.checked = checked; } public JsonElement getAttributes() { return attributes; } public void setAttributes(JsonElement attributes) { this.attributes = attributes; } public List<EasyUITree> getChildren() { return children; } public void setChildren(List<EasyUITree> children) { this.children = children; } public String toJson(){ return EasyUITreeGsonBuilder.INSTANCE.create().toJson(this); } public JsonElement toJsonTree(){ return EasyUITreeGsonBuilder.INSTANCE.create().toJsonTree(this); }}
2.GosonBuilder
public class EasyUITreeGsonBuilder { public static final GsonBuilder INSTANCE = new GsonBuilder(); static { INSTANCE.disableHtmlEscaping(); INSTANCE.registerTypeAdapter(EasyUITree.class,new EasyUITreeGsonAdapter()); } public static Gson create() { return INSTANCE.create(); }}
public class EasyUITreeGsonAdapter implements JsonSerializer<EasyUITree>{ @Override public JsonElement serialize(EasyUITree tree, Type typeOfSrc,JsonSerializationContext context) { JsonObject treejson = new JsonObject(); if(tree.getId() !=null){ treejson.addProperty("id", tree.getId()); } if(tree.getText() !=null){ treejson.addProperty("text", tree.getText()); } if(tree.isChecked()){ treejson.addProperty("checked", true); } if(tree.getState()!=null){ if(tree.getState()=="closed"){ treejson.addProperty("state", "closed"); }else{} } if(tree.getAttributes() !=null){ treejson.add("attributes", tree.getAttributes()); } //chirldren if(tree.getChildren().size()!=0){ JsonArray treesJsonArray = new JsonArray(); for(EasyUITree node :tree.getChildren()){ //使用递归构建子节点 JsonElement serialize = serialize(node,typeOfSrc,context); treesJsonArray.add(serialize); treejson.add("children", treesJsonArray); } } return treejson; }}
3.测试
我这边是企业号微信的通讯录树
/** * * 获取部门的用户树 * @return * @throws WxErrorException */ public static List<EasyUITree> getTrees() throws WxErrorException{ WxCpService wxCpService = WxCpMsgService.getInstance(); //部门list集合 List<WxCpDepart> departList = wxCpService.departGet(); List<EasyUITree> trees = new ArrayList<EasyUITree>(); for(WxCpDepart dept : departList){ EasyUITree tree = new EasyUITree(); tree.setId(dept.getId().toString()); tree.setText(dept.getName()); tree.setAttributes(new WxCpGsonBuilder().create().toJsonTree(dept)); trees.add(tree); List<EasyUITree> children = tree.getChildren(); //通过部门得到的用户list集合 List<WxCpUser> userList = wxCpService.userList(dept.getId(),true,0); for(WxCpUser user: userList){ EasyUITree tree1 = new EasyUITree(); tree1.setId(user.getUserId()); tree1.setText(user.getName()); tree1.setAttributes(new WxCpGsonBuilder().create().toJsonTree(user)); children.add(tree1); } } return trees; }
public static void main(String[] args) throws WxErrorException { WxCpService wxCpService = WxCpMsgService.getInstance(); List<EasyUITree> slist = getTrees(); List<EasyUITree> jlist = new ArrayList<EasyUITree>(); for(EasyUITree t1 :slist){ boolean mark = false; for(EasyUITree t2 : slist){ //获取部门对象 WxCpDepart d1 = WxCpDepart.fromJson(t1.getAttributes().toString()); WxCpDepart d2 = WxCpDepart.fromJson(t2.getAttributes().toString()); if(d1.getParentId()==d2.getId()){ mark = true ; if(t2.getChildren().size()==0){ t2.setChildren(new ArrayList<EasyUITree>()); } t2.getChildren().add(t1); break; } } if(!mark){ jlist.add(t1); } } StringBuilder jsonStr = new StringBuilder(); jsonStr.append("["); for(EasyUITree shu : jlist){ jsonStr.append(shu.toJson()+","); } String jstr = jsonStr.substring(0, (jsonStr.lastIndexOf(","))); jstr = jstr + "]"; System.out.println(jstr); }
最后打印出来的json
easyui页面展示效果
0 0
- 后台如何拼接easyUI tree格式的 json数据 构建动态树
- 递归反射构建EasyUI-Tree格式数据
- <easyui>树格式数据的构造(Java拼接)
- 如何构建JSON数据,JSON数据的格式,JSON数据的获取
- easyui struts后台实现tree返回json数据
- easyui struts后台实现tree返回json数据
- easyui struts后台实现tree返回json数据
- 生成符合EasyUI-Tree的JSON数据
- json格式化为适用easyUI tree的json
- easyui-tree动态获取后台数据成为书结构的操作
- EXJjs 递归拼接出的tree json格式
- Easyui动态加载后台数据的例子
- jquery easyui tree动态加载-服务端struts返回json数据
- js拼接json格式数据
- php生成easyUI Tree要用到的json格式
- 递归实现EasyUI中Tree的Json格式
- json篇 如何拼接json格式和前台如何解析json格式的
- jquery easyui tree后台组装json
- 从源码来分析ThreadLocal、Message、Handler、Looper、MessageQueue
- 算法导论 16-1.1活动选择问题 动态规划解
- 自定义一个背景可以滚动的tab栏
- freeMarker简单小总结
- python处理json
- 后台如何拼接easyUI tree格式的 json数据 构建动态树
- 相似性︱python+opencv实现pHash算法+hamming距离(simhash)(三)
- 无题
- poj 1178 Camelot(floyed+动规)
- Linux中修改网卡名字&修改IP地址报错
- MTK Android Driver:UART
- [学习笔记]JavaScript[1]
- arduino+proteus 仿真
- UVA 133 The Dole Queue 【约瑟夫环】