通过城市的名字来获取到省份的名字(java)

前言:这两天想搞一个关于天气的api,然后根据群友的推荐,还是发现腾讯的天气api比较好用,一个是内容多,而且URL填写参数的时候也很任人性化。

但是唯一一个不好的就是,需要省份的名字。我这波去网上找了一波,在csdn里面只有一个js版的,感觉不好,太长了,而且冗余的信息也太多了。然后我就自己来写了一个。

需要的依赖

        <dependency>
            <groupId>cn.hutoolgroupId>
            <artifactId>hutool-allartifactId>
            <version>5.4.5version>
        dependency>

如果没有这个依赖的话,我感觉要写不少代码.

思路就是穷举法。

1 . 首先打开百度,找到城市名称大全

https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E5%9F%8E%E5%B8%82%E5%90%8D%E7%A7%B0%E5%A4%A7%E5%85%A8

通过城市的名字来获取到省份的名字(java)_第1张图片
往下面翻,这个后面都是我们要的数据了
接下来我是用的代码按省份一个个复制的,
代码如下。

public static void main(String[] args) throws IOException {
        //创建文件
        File file = new File("Mycity.json");
        if (!file.exists()) {
            file.createNewFile();
        }

        String province = "新疆维吾尔";
        String cityName = "乌鲁木齐市 石河子市 喀什市 阿勒泰市 阜康市 库尔勒市 阿克苏市 " +
                "阿拉尔市 哈密市 克拉玛依市 昌吉市 奎屯市 米泉市 和田市 塔城市 ";
               String s = cityName.replaceAll(" ", "\",\"");


        String jsonArray = "\""+province+"\": [\"" + s + "\"]";
        System.out.println(jsonArray);

        //将json写入到文件中
        IoUtil.write(new FileOutputStream(file, true), true, jsonArray.getBytes("UTF-8"));
        System.out.println();


    }

我每次都写入一个省份,然后很快就可以得到一个包含所有城市的json文件。
值得注意的是,我国有四个直辖市和两个自治区。分别是北京市、天津市、 重庆市、上海市、香港、上海

这个就得到省份和城市的json文件了。

{
  "河南省": [
    "郑州市",
    "洛阳市",
    "焦作市",
    "商丘市",
    "信阳市",
    "周口市",
    "鹤壁市",
    "安阳市",
    "濮阳市",
    "驻马店市",
    "南阳市",
    "开封市",
    "漯河市",
    "许昌市",
    "新乡市",
    "济源市",
    "灵宝市",
    "偃师市",
    "邓州市",
    "登封市",
    "三门峡市",
    "新郑市",
    "禹州市",
    "巩义市",
    "永城市",
    "长葛市",
    "义马市",
    "林州市",
    "项城市",
    "汝州市",
    "荥阳市",
    "平顶山市",
    "卫辉市",
    "辉县市",
    "舞钢市",
    "新密市",
    "孟州市",
    "沁阳市",
    "郏县"
  ],
  "安徽省": [
    "合肥市",
    "亳州市",
    "芜湖市",
    "马鞍山市",
    "池州市",
    "黄山市",
    "滁州市",
    "安庆市",
    "淮南市",
    "淮北市",
    "蚌埠市",
    "宿州市",
    "宣城市",
    "六安市",
    "阜阳市",
    "铜陵市",
    "明光市",
    "天长市",
    "宁国市",
    "界首市",
    "桐城市",
    "潜山市"
  ],
  "福建省": [
    "福州市",
    "厦门市",
    "泉州市",
    "漳州市",
    "南平市",
    "三明市",
    "龙岩市",
    "莆田市",
    "宁德市",
    "龙海市",
    "建瓯市",
    "武夷山市",
    "长乐市",
    "福清市",
    "晋江市",
    "南安市",
    "福安市",
    "邵武市",
    "石狮市",
    "福鼎市",
    "建阳市",
    "漳平市",
    "永安市"
  ],
  "甘肃省": [
    "兰州市",
    "白银市",
    "武威市",
    "金昌市",
    "平凉市",
    "张掖市",
    "嘉峪关市",
    "酒泉市",
    "庆阳市",
    "定西市",
    "陇南市",
    "天水市",
    "玉门市",
    "临夏市",
    "合作市",
    "敦煌市",
    "甘南州"
  ],
  "贵州省": [
    "贵阳市",
    "安顺市",
    "遵义市",
    "六盘水市",
    "兴义市",
    "都匀市",
    "凯里市",
    "毕节市",
    "清镇市",
    "铜仁市",
    "赤水市",
    "仁怀市",
    "福泉市"
  ],
  "海南省": [
    "海口市",
    "三亚市",
    "万宁市",
    "文昌市",
    "儋州市",
    "琼海市",
    "东方市",
    "五指山市"
  ],
  "河北省": [
    "石家庄市",
    "保定市",
    "唐山市",
    "邯郸市",
    "邢台市",
    "沧州市",
    "衡水市",
    "廊坊市",
    "承德市",
    "迁安市",
    "鹿泉市",
    "秦皇岛市",
    "南宫市",
    "任丘市",
    "叶城市",
    "辛集市",
    "涿州市",
    "定州市",
    "晋州市",
    "霸州市",
    "黄骅市",
    "遵化市",
    "张家口市",
    "沙河市",
    "三河市",
    "冀州市",
    "武安市",
    "河间市",
    "深州市",
    "新乐市",
    "泊头市",
    "安国市",
    "双滦区",
    "高碑店市"
  ],
  "黑龙江省": [
    "哈尔滨市",
    "伊春市",
    "牡丹江市",
    "大庆市",
    "鸡西市",
    "鹤岗市",
    "绥化市",
    "齐齐哈尔市",
    "黑河市",
    "富锦市",
    "虎林市",
    "密山市",
    "佳木斯市",
    "双鸭山市",
    "海林市",
    "铁力市",
    "北安市",
    "五大连池市",
    "阿城市",
    "尚志市",
    "五常市",
    "安达市",
    "七台河市",
    "绥芬河市",
    "双城市",
    "海伦市",
    "宁安市",
    "讷河市",
    "穆棱市",
    "同江市",
    "肇东市"
  ],
  "湖北省": [
    "武汉市",
    "荆门市",
    "咸宁市",
    "襄阳市",
    "荆州市",
    "黄石市",
    "宜昌市",
    "随州市",
    "鄂州市",
    "孝感市",
    "黄冈市",
    "十堰市",
    "枣阳市",
    "老河口市",
    "恩施市",
    "仙桃市",
    "天门市",
    "钟祥市",
    "潜江市",
    "麻城市",
    "洪湖市",
    "汉川市",
    "赤壁市",
    "松滋市",
    "丹江口市",
    "武穴市",
    "广水市",
    "石首市",
    "大冶市",
    "枝江市",
    "应城市",
    "宜城市",
    "当阳市",
    "安陆市",
    "宜都市",
    "利川市"
  ],
  "湖南省": [
    "长沙市",
    "郴州市",
    "益阳市",
    "娄底市",
    "株洲市",
    "衡阳市",
    "湘潭市",
    "岳阳市",
    "常德市",
    "邵阳市",
    "永州市",
    "张家界市",
    "怀化市",
    "浏阳市",
    "醴陵市",
    "湘乡市",
    "耒阳市",
    "沅江市",
    "涟源市",
    "常宁市",
    "吉首市",
    "津市市",
    "冷水江市",
    "临湘市",
    "汨罗市",
    "武冈市",
    "韶山市",
    "湘西州"
  ],
  "吉林省": [
    "长春市",
    "吉林市",
    "通化市",
    "白城市",
    "四平市",
    "辽源市",
    "松原市",
    "白山市",
    "集安市",
    "梅河口市",
    "双辽市",
    "延吉市",
    "九台市",
    "桦甸市",
    "榆树市",
    "蛟河市",
    "磐石市",
    "大安市",
    "德惠市",
    "洮南市",
    "龙井市",
    "珲春市",
    "公主岭市",
    "图们市",
    "舒兰市",
    "和龙市",
    "临江市",
    "敦化市"
  ],
  "江苏省": [
    "南京市",
    "无锡市",
    "常州市",
    "扬州市",
    "徐州市",
    "苏州市",
    "连云港市",
    "盐城市",
    "淮安市",
    "宿迁市",
    "镇江市",
    "南通市",
    "泰州市",
    "兴化市",
    "东台市",
    "常熟市",
    "江阴市",
    "张家港市",
    "通州市",
    "宜兴市",
    "邳州市",
    "海门市",
    "溧阳市",
    "泰兴市",
    "如皋市",
    "昆山市",
    "启东市",
    "江都市",
    "丹阳市",
    "吴江市",
    "靖江市",
    "扬中市",
    "新沂市",
    "仪征市",
    "太仓市",
    "姜堰市",
    "高邮市",
    "金坛市",
    "句容市",
    "灌南县",
    "海安市"
  ],
  "江西省": [
    "南昌市",
    "赣州市",
    "上饶市",
    "宜春市",
    "景德镇市",
    "新余市",
    "九江市",
    "萍乡市",
    "抚州市",
    "鹰潭市",
    "吉安市",
    "丰城市",
    "樟树市",
    "德兴市",
    "瑞金市",
    "井冈山市",
    "高安市",
    "乐平市",
    "南康市",
    "贵溪市",
    "瑞昌市",
    "东乡县",
    "广丰县",
    "信州区",
    "三清山"
  ],
  "辽宁省": [
    "沈阳市",
    "葫芦岛市",
    "大连市",
    "盘锦市",
    "鞍山市",
    "铁岭市",
    "本溪市",
    "丹东市",
    "抚顺市",
    "锦州市",
    "辽阳市",
    "阜新市",
    "调兵山市",
    "朝阳市",
    "海城市",
    "北票市",
    "盖州市",
    "凤城市",
    "庄河市",
    "凌源市",
    "开原市",
    "兴城市",
    "新民市",
    "大石桥市",
    "东港市",
    "北宁市",
    "瓦房店市",
    "普兰店市",
    "凌海市",
    "灯塔市",
    "营口市"
  ],
  "青海省": [
    "西宁市",
    "玉树市",
    "格尔木市",
    "德令哈市"
  ],
  "山东省": [
    "济南市",
    "青岛市",
    "威海市",
    "潍坊市",
    "菏泽市",
    "济宁市",
    "东营市",
    "烟台市",
    "淄博市",
    "枣庄市",
    "泰安市",
    "临沂市",
    "日照市",
    "德州市",
    "聊城市",
    "滨州市",
    "乐陵市",
    "兖州市",
    "诸城市",
    "邹城市",
    "滕州市",
    "肥城市",
    "新泰市",
    "胶州市",
    "胶南市",
    "龙口市",
    "平度市",
    "莱西市"
  ],
  "山西省": [
    "太原市",
    "大同市",
    "阳泉市",
    "长治市",
    "临汾市",
    "晋中市",
    "运城市",
    "忻州市",
    "朔州市",
    "吕梁市",
    "古交市",
    "高平市",
    "永济市",
    "孝义市",
    "侯马市",
    "霍州市",
    "介休市",
    "河津市",
    "汾阳市",
    "原平市",
    "晋城市",
    "潞城市"
  ],
  "陕西省": [
    "西安市",
    "咸阳市",
    "榆林市",
    "宝鸡市",
    "铜川市",
    "渭南市",
    "汉中市",
    "安康市",
    "商洛市",
    "延安市",
    "韩城市",
    "兴平市",
    "华阴市"
  ],
  "四川省": [
    "成都市",
    "广安市",
    "德阳市",
    "乐山市",
    "巴中市",
    "内江市",
    "宜宾市",
    "南充市",
    "都江堰市",
    "自贡市",
    "泸州市",
    "广元市",
    "达州市",
    "资阳市",
    "绵阳市",
    "眉山市",
    "遂宁市",
    "雅安市",
    "阆中市",
    "攀枝花市",
    "广汉市",
    "绵竹市",
    "万源市",
    "华蓥市",
    "江油市",
    "西昌市",
    "彭州市",
    "简阳市",
    "崇州市",
    "什邡市",
    "峨眉山市",
    "邛崃市",
    "双流县"
  ],
  "云南省": [
    "昆明市",
    "玉溪市",
    "大理市",
    "曲靖市",
    "昭通市",
    "保山市",
    "丽江市",
    "临沧市",
    "楚雄市",
    "开远市",
    "个旧市",
    "景洪市",
    "安宁市",
    "宣威市",
    "文山市",
    "普洱市"
  ],
  "浙江省": [
    "杭州市",
    "宁波市",
    "绍兴市",
    "温州市",
    "台州市",
    "湖州市",
    "嘉兴市",
    "金华市",
    "舟山市",
    "衢州市",
    "丽水市",
    "余姚市",
    "乐清市",
    "临海市",
    "温岭市",
    "永康市",
    "瑞安市",
    "慈溪市",
    "义乌市",
    "上虞市",
    "诸暨市",
    "海宁市",
    "桐乡市",
    "兰溪市",
    "龙泉市",
    "建德市",
    "富德市",
    "富阳市",
    "平湖市",
    "东阳市",
    "嵊州市",
    "奉化市",
    "临安市",
    "江山市"
  ],
  "台湾省": [
    "台北市",
    "台南市",
    "台中市",
    "高雄市",
    "桃源市"
  ],
  "广东省": [
    "广州市",
    "深圳市",
    "珠海市",
    "汕头市",
    "佛山市",
    "韶关市",
    "湛江市",
    "肇庆市",
    "江门市",
    "茂名市",
    "惠州市",
    "梅州市",
    "汕尾市",
    "河源市",
    "阳江市",
    "清远市",
    "东莞市",
    "中山市",
    "潮州市",
    "揭阳市",
    "云浮市"
  ],
  "广西": [
    "南宁市",
    "贺州市",
    "玉林市",
    "桂林市",
    "柳州市",
    "梧州市",
    "北海市",
    "钦州市",
    "百色市",
    "防城港市",
    "贵港市",
    "河池市",
    "崇左市",
    "来宾市",
    "东兴市",
    "桂平市",
    "北流市",
    "岑溪市",
    "合山市",
    "凭祥市",
    "宜州市"
  ],
  "内蒙古": [
    "呼和浩特市",
    "呼伦贝尔市",
    "赤峰市",
    "扎兰屯市",
    "鄂尔多斯市",
    "乌兰察布市",
    "巴彦淖尔市",
    "二连浩特市",
    "霍林郭勒市",
    "包头市",
    "乌海市",
    "阿尔山市",
    "乌兰浩特市",
    "锡林浩特市",
    "根河市",
    "满洲里市",
    "额尔古纳市",
    "牙克石市",
    "临河市",
    "丰镇市",
    "通辽市"
  ],
  "宁夏": [
    "银川市",
    "固原市",
    "石嘴山市",
    "青铜峡市",
    "中卫市",
    "吴忠市",
    "灵武市"
  ],
  "西藏": [
    "拉萨市",
    "那曲市",
    "山南市",
    "林芝市",
    "昌都市",
    "阿里地区日喀则市"
  ],
  "新疆维吾尔": [
    "乌鲁木齐市",
    "石河子市",
    "喀什市",
    "阿勒泰市",
    "阜康市",
    "库尔勒市",
    "阿克苏市",
    "阿拉尔市",
    "哈密市",
    "克拉玛依市",
    "昌吉市",
    "奎屯市",
    "米泉市",
    "和田市",
    "塔城市"
  ],
  "北京": ["北京市"],
  "天津": ["天津市"],
  "上海": ["上海市"],
  "重庆": ["重庆市"],
  "香港": ["香港"],
  "澳门": ["澳门"]
}

2、工具类

写代码这部分就比较简单了。

public static String getProvinceByCity(String city){
        if (city.length()<2) return null;
        //从json文件中来拿到json对象

        JSONObject jsonObject = JSONUtil.readJSONObject(new File("Mycity.json"), Charset.forName("UTF-8"));
        for (String s : jsonObject.keySet()) {
            JSONArray jsonArray = jsonObject.getJSONArray(s);
            for (int i = 0; i < jsonArray.size(); i++) {
                if (jsonArray.getStr(i).contains(city)){
                    return s;
                }
            }
        }
        return null;
    }

写完之后就试试调用,用起来也还可以
通过城市的名字来获取到省份的名字(java)_第2张图片

你可能感兴趣的:(学习笔记)