<easyui>树格式数据的构造(Java拼接)

1.导入json相关的jar包

2.JsonTreeHelper.java

3.调用getTreeJsonStr方法:

      nodesNameBySeq:待分组的节点名称.将树节点对应的实体类的成员名称放到此数组里面,顺序是{"根节点","子节点1","子节点2"...}
      data:数据列表,List<实体类> data ; 

说明:树默认是节点关闭状态,json中只有id,text,state字段

编写原理:

1).首先用groupByNodeName将数据分组

        用Java中的Field进行字段比较,来获得相对应的成员字段,以及成员变量的名称,这里要用getDeclaredFields方法来获得,否则,private声明的成员是无法得到Field的

        将得到的fieldIndex全部放到数组中保存,便于以后的使用,field[fieldIndex]可以得到相应的字段

2).构造一个tree的json形式的类:里面有几个重要的成员:{id,text,state}这种形式用JsonObject.fromObject(jsonObj}能直接转换为tree所需要的json,并且,这个类中要有一

        个children字段,保存子节点的数据

3).recursiveTree方法

       # 此方法内要递归遍历树,返回一个list,list中是一个JsonTreeObj自定义的一个类,其中的children还可以保存一个JsonTreeObj,这样就可以实现嵌套

       #在递归之前,首先要有一个成员变量(全局变量)来记录要分组的节点索引

      先进行一次分组,得到的map就是JsonTreeObj,通过构造方法可以实现转换,这样,转换过来的JsonTreeObj才是我们的Tree-json,但这只是一次调用

      是否再次分组,要用事先准备好的    fieldIndex长度或者nodesNameBySeq进行判断,如果要继续分组,那么需要移除map中每条数据中的list并重新分组成map.

      即:用新分组的List替换以前未分组的List

      返回之后,返回分组好的JsonTreeObj数据,此时的list差不多和需要的json相仿但是,还要做下字符串的调整

4).replaceText

      用此方法来替换最深层节点的文本,否则字段中无text,会出现undefine

4.示例

1)要构造的树


2)要构造的json

[
    {
        "children": [
            {
                "children": [
                    {
                        "children": [
                            {
                                "address": "bj",
                                "text": "id1",
                                "name": "wang'ao1",
                                "occupation": "student"
                            }
                        ],
                        "id": "0.5715806450144063",
                        "state": "closed",
                        "text": "student"
                    }
                ],
                "id": "0.4010186645348438",
                "state": "closed",
                "text": "bj"
            },
            {
                "children": [
                    {
                        "children": [
                            {
                                "address": "bj11",
                                "text": "id12",
                                "name": "wang'ao1",
                                "occupation": "student"
                            }
                        ],
                        "id": "0.188373241944635",
                        "state": "closed",
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值