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 有什么问题可以给我留言噢~
  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10326946.html
Copyright © 2011-2022 走看看