// 用来放json
			List<JSONObject> l = new ArrayList<>();
			// 得到数据库中的数据
			List<TreeNode> menuTreeList = md.menuTreeList(req.getParameterMap(), null);
			for (TreeNode treeNode : menuTreeList) {
				// 创建json对象,用来得到想要的json格式
				JSONObject obj = new JSONObject();
				// 这是树形菜单要的json格式(树形菜单读取的数据是json格式)
				obj.put("name", treeNode.getname());
				obj.put("asdasd", treeNode.getname());
				obj.put("id", treeNode.getId());
				// obj.put("children", treeNode.getChildren());
				// 用来存放相应的父菜单下的子菜单
				List<JSONObject> r = new ArrayList<>();
				// 遍历相应的子菜单集合
				for (TreeNode rr : treeNode.getChildren()) {
					// 这是树形菜单需要的子菜单的格式(属性chirdren的设置)
					JSONObject o = new JSONObject();
					o.put("id", rr.getId());
					o.put("name", rr.getname());
					o.put("children", rr.getAttributes());
					o.put("href", rr.getAttributes().get("href"));
					// obj.put("pid", rr.getPid());
					// 下一层子菜单
					List<JSONObject> s1 = new ArrayList<>();
					for (TreeNode s2 : rr.getChildren()) {//如果有多层的话继续使用循环嵌套
						JSONObject o1 = new JSONObject();
						o1.put("id", s2.getId());
						o1.put("name", s2.getname());
						o1.put("children", s2.getAttributes());
						o1.put("href", s2.getAttributes().get("href"));
						// System.out.println(s2.getname());
						s1.add(o1);
					} // 将子菜单的集合放到chirden属性里面
					o.put("children", s1);
					r.add(o);
					// 将子菜单的集合放到chirden属性里面
					obj.put("children", r);
					// System.out.println(obj);
				}
				l.add(obj);
			}
			
			String outstr = JSON.toJSONString(l);
			super.print(outstr, resp);//将json字符输出到前台的方法

上面的是按照结构顺序一层一层的拼上去,下面这个是递归实现

public List<JSONObject> jsonObjects(List<TreeNode> resp) {
		JSONObject jsonObject = new JSONObject();
		List<JSONObject> l1 = new ArrayList<>();
		for (TreeNode treeNode : resp) {
			jsonObject = new JSONObject();
			jsonObject.put("id", treeNode.getId());
			jsonObject.put("name", treeNode.getname());
			jsonObject.put("href", treeNode.getAttributes().get("href"));
			if (treeNode.getChildren() != null && treeNode.getChildren().size() > 0) {
				List<JSONObject> lss = jsonObjects(treeNode.getChildren());
				jsonObject.put("children", lss);
			}
			l1.add(jsonObject);
		}
		return l1;
	}

 

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 3 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐