数据库获取map数据后转化成json格式的数据

一,从数据库查出来的数据

两张表先各自左外连接,然后在相互左外连接查找省市县的数据(业务需求必须这样做,省市去的是第一张表,而市县取的是第二张表,两张表中间通过市的名字连接)见这个博文的最后一张图片

二,要求的json格式的数据

json省市县数据源

三,实现的关键代码

  public String queryFullZoneInfo() {
         List<Map<String, String>> mapList = zoneInfoService.queryFullZoneInfo();
         List<Map<String, Object>> zoneList = new ArrayList<Map<String, Object>>();
         Map<String, Object> existMap = new HashMap<String, Object>();
         for (Map<String, String> map : mapList) {
             String province = map.get("province");
             Map<String, Object> provinceMap = null;
             if (existMap.containsKey(province)) {
                 provinceMap = (Map<String, Object>) existMap.get(province);
             } else {
                 provinceMap = new HashMap<String, Object>();
                 existMap.put(province, provinceMap);
                 zoneList.add(provinceMap);
             }

             provinceMap.put("Code", map.get("provinceCode"));
             provinceMap.put("Name", map.get("province"));
             String city = map.get("city");
             if (StringUtils.isNotEmpty(city)) {
                 List<Map<String, Object>> provinceCityList = null;
                 if (existMap.containsKey(province + "_")) {
                     provinceCityList = (List<Map<String, Object>>) existMap.get(province + "_");
                 } else {
                     provinceCityList = new ArrayList<Map<String, Object>>();
                     existMap.put(province + "_", provinceCityList);
                     provinceMap.put("level", provinceCityList);
                 }
                 Map<String, Object> provinceCityMap = null;
                 if (existMap.containsKey(province + "_" + city)) {
                     provinceCityMap = (Map<String, Object>) existMap.get(province + "_" + city);
                 } else {
                     provinceCityMap = new HashMap<String, Object>();
                     existMap.put(province + "_" + city, provinceCityMap);
                     provinceCityList.add(provinceCityMap);
                     String citySort = String.valueOf(existMap.get(province + "_sort"));
                     existMap.put(province + "_sort", "null".equals(citySort) ? 1 : NumberUtils.toInt(citySort) + 1);
                     provinceCityMap.put("sort", existMap.get(province + "_sort"));
                 }

                 provinceCityMap.put("Name", city);
                 provinceCityMap.put("Code", map.get("cityCode"));

                 String country = map.get("country");
                 if (StringUtils.isNotEmpty(country)) {
                     List<Map<String, Object>> provinceCityCountryList = null;
                     if (existMap.containsKey(province + "_" + city + "_")) {
                         provinceCityCountryList = (List<Map<String, Object>>) existMap.get(province + "_" + city + "_");
                     } else {
                         provinceCityCountryList = new ArrayList<Map<String, Object>>();
                         existMap.put(province + "_" + city + "_", provinceCityCountryList);
                         provinceCityMap.put("level", provinceCityCountryList);
                     }

                     Map<String, Object> provinceCityCountryMap = null;
                     if (existMap.containsKey(province + "_" + city + "_" + country)) {
                         provinceCityCountryMap = (Map<String, Object>) existMap.get(province + "_" + city + "_" + country);
                     } else {
                         provinceCityCountryMap = new HashMap<String, Object>();
                         existMap.put(province + "_" + city + "_" + country, provinceCityCountryMap);
                         provinceCityCountryList.add(provinceCityCountryMap);
                         String countrySort = String.valueOf(existMap.get(province + "_" + city + "_sort"));
                         existMap.put(province + "_" + city + "_sort", "null".equals(countrySort) ? 1 : NumberUtils.toInt(countrySort) + 1);
                         provinceCityCountryMap.put("sort", existMap.get(province + "_" + city + "_sort"));
                     }

                     provinceCityCountryMap.put("Code", map.get("countryCode"));
                     provinceCityCountryMap.put("Name", country);
                 }
             }
         }

         try {
             return JsonUtils.toJson(zoneList);
         } catch (Exception e) {
             e.printStackTrace();
         }

         return null;
     }
     
上一篇:openstack allinone vxlan,虚机网络不通


下一篇:linux – 如何计算网桥中的接口数量