将腾讯地图API中的省市区列表解析成sql文本

@GetMapping("getCityList")
public AjaxResult getCityList() throws Exception {
    // 腾讯地图获取所有城市链接
    JSONObject str =  HttpsClient.sendGet("https://apis.map.qq.com/ws/district/v1/list?key=H3OBZ-47M6W-COSRA-RZBH2-VWXSJ-ZLBSA",null);
    JSONArray map = (JSONArray) str.get("result");
    // 生成sql
    StringBuilder sqlStr = new StringBuilder("insert into cc_tx_city(name,full_name,code,pinyin,lng,lat,parent_code) values ");
    // 获取省份
    JSONArray province = (JSONArray) map.get(0);
    // 获取城市
    JSONArray city = (JSONArray) map.get(1);
    // 获取区县
    JSONArray county = (JSONArray) map.get(2);
    JSONArray jsonArray = new JSONArray();
    // 给城市设置父级省份code
    city.forEach(itemc->{
       // 遍历的当前城市信息
       JSONObject c = (JSONObject) itemc;
       // 获取城市code前两位
       String prefix = c.get("id").toString().substring(0,2);
       province.forEach(itemp ->{
           // 遍历省份
           JSONObject p = (JSONObject) itemp;
           // 省份设置父级code为0
           ((JSONObject) itemp).put("parentCode","0");
           p.put("parentCode","0");
           // 获取省份的前两位
           String p2 = p.get("id").toString().substring(0,2);
           // 校验省份前缀和城市前缀是否一致
           if (prefix .equals(p2) ) {
               // 一致设置城市前缀为省份code
               ((JSONObject) itemc).put("parentCode",((JSONObject) itemp).get("id").toString());
           }
       });
    });
    // 给区县设置父级城市code
    county.forEach(items->{
        // 遍历的当前区县信息
        JSONObject s = (JSONObject) items;
        // 获取当前区县信息
        String prefix = s.get("id").toString().substring(0,4);
        city.forEach(itemc ->{
            // 遍历城市
            JSONObject p = (JSONObject) itemc;
            // 获取城市的前四位
            String preCode = p.get("id").toString().substring(0,4);
            // 校验区县前缀和城市前缀是否一致
            if (prefix.equals(preCode)) {
                ((JSONObject) items).put("parentCode",p.get("id").toString());
            }
        });
    });

    jsonArray.addAll(province);
    jsonArray.addAll(city);
    jsonArray.addAll(county);
   for (int j = 0;j <jsonArray.size();j++) {
       JSONObject jsonObject = jsonArray.getJSONObject(j);
       String fullName = jsonObject.get("fullname").toString();
       String code = jsonObject.get("id").toString();
       String name = jsonObject.get("name") != null?jsonObject.get("name").toString():"";
       String pinyin = jsonObject.get("pinyin") != null? jsonObject.get("pinyin").toString():"";
       JSONObject location = jsonObject.getJSONObject("location");
       String lat = location.getString("lat");
       String lng = location.getString("lng");
       String parentCode = jsonObject.getString("parentCode");
       String lastStr = "( '"+name+"','"+fullName+"','" +code +"','"+pinyin+"','"+lng+"','" +lat +"','"+parentCode +"'),";
        sqlStr.append(lastStr);
   }
   return AjaxResult.success(sqlStr.toString());
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值