zoukankan      html  css  js  c++  java
  • 返回三级联动的JSON数据

    如下,我们要返回下面的数据格式

     {
          "value": "3",
          "label": "安徽省",
          "children": [
            {
              "value": "安庆市",
              "label": "36",
              "children1s": [
                {
                  "label": "398",
                  "value": "迎江区"
                },
                {
                  "label": "399",
                  "value": "大观区"
                },
                {
                  "label": "400",
                  "value": "宜秀区"
                },
                {
                  "label": "401",
                  "value": "桐城市"
                },
                {
                  "label": "402",
                  "value": "怀宁县"
                },
                {
                  "label": "403",
                  "value": "枞阳县"
                },
                {

    那么可以通过构造辅助类来完成

    这里因为这里是三级,所以我就构造了三个辅助类

    @Getter
    @Setter
    public class Data {
        private String value;
        private String label;
        private List<Children> children;
    }
    
    @Setter
    @Getter
    public class Children {
        private String value;
        private String label;
        private List<Children1> children1s;
    }
    
    @Getter
    @Setter
    public class Children1 {
        private String label;
        private String value;
    }

    我的mapper

      //查询所有的省
        @Select("select * from zone where pid = 1")
        List<ZoneInfo> selectProvince();
    
        //查询该省所有的市
        @Select("select * from zone where  pid =#{provinceId}")
        List<ZoneInfo> selectCityByProvinceId(String provinceId);
    
        //查询该市对应的县
        @Select("select * from zone where  pid =#{cityId}")
        List<ZoneInfo> selectCountyByCityId(String cityId);

    接下来是我的serviceimpl

     @Override
        public Result selectAll() {
            List<Data> dataList = null;
            try {
                dataList = new ArrayList<Data>();
                List<ZoneInfo> provinces = zoneInfoMapper.selectProvince();
                for (ZoneInfo province : provinces) {
                    Data data = new Data();
                    data.setValue(String.valueOf(province.getId()));
                    data.setLabel(province.getDistrict());
                    List<ZoneInfo> cities = zoneInfoMapper.selectCityByProvinceId(String.valueOf(province.getId()));
                    List<Children> childrenList = new ArrayList<Children>();
                    for (ZoneInfo city : cities) {
                        Children children = new Children();
    
                        children.setLabel(String.valueOf(city.getId()));
                        children.setValue(city.getDistrict());
                        childrenList.add(children);
    
                        List<ZoneInfo> counties = zoneInfoMapper.selectCountyByCityId(String.valueOf(city.getId()));
                        List<Children1> children1s = new ArrayList<Children1>();
                        for (ZoneInfo county : counties) {
                            Children1 children1 = new Children1();
                            children1.setLabel(String.valueOf(county.getId()));
                            children1.setValue(county.getDistrict());
                            children1s.add(children1);
                        }
                        children.setChildren1s(children1s);
    
                    }
                    data.setChildren(childrenList);
                    dataList.add(data);
                }
            } catch (Exception e) {
                Logger.logMsg(4, e.getMessage());
                return Result.build(500, ErrorCode.UNKNOWN_ERROR.getStatusMsg());
            }
            return Result.ok(dataList);
        }

    这里需要注意的是

    Data data = new Data();需要在for循环里面创建,因为对于不同的province都是一个data,然后每一个data最终添加到datalist里面。如果是在for循环外面实例化,就会被覆盖掉,导致datalist里面的数据只有最后一个
    同样的下面的children以及children1也一样
    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    office excel无法打开超链接解决方法
    mysql默认的数据库介绍(还没看,找时间研究)
    mysql目录结构及配置文件
    springboot-actuator应用后台监控
    服务器端负载均衡和客户端负载均衡的区别
    Spring Cloud Eureka 自我保护机制
    HDU 4028 The time of a day (dp+离散化)
    HDU 3652 B-number(数位DP)
    HDU 2966 In case of failure
    HDU 3622 Bomb Game
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10326946.html
Copyright © 2011-2022 走看看