數據來源是百度百科的行政區劃,數據採集截止日期2018/9/28。
json格式比較簡單粗暴~~~能用就好,好用就行~~~
json數據舉例:
{
"北京市": {
"北京市": ["東城區", "西城區", "朝陽區", "豐臺區", "石景山區", "海淀區", "順義區", "通州區", "大興區", "房山區", "門頭溝區", "昌平區", "平谷區", "密雲區", "懷柔區", "延慶區"]
},
"天津市": {
"天津市": ["和平區", "河東區", "河西區", "南開區", "河北區", "紅橋區", "濱海新區", "東麗區", "西青區", "津南區", "北辰區", "武清區", "寶坻區", "寧河區", "靜海區", "薊州區"]
},
"河北省": {
存儲數據結構,冗餘設計
public class Province {
/**
* 一級省級行政區:分爲省、自治區、直轄市、特別行政區;
*/
private String name;
/**
* 二級地級行政區:分爲地級市、地區、自治州、盟;
*/
private List<City> cities = new ArrayList<>();
}
public class City {
/**
* 所屬省份
*/
private String province;
/**
* 二級地級行政區:分爲地級市、地區、自治州、盟; prefecture
*/
private String name;
/**
* 三級縣級行政區:分爲市轄區、縣、自治縣、縣級市、旗、自治旗、林區、特區;
*/
private List<County> counties = new ArrayList<>();
}
public class County {
/**
* 所屬 省份
*/
private String province;
/**
* 所屬 城市
*/
private String city;
/**
* 三級縣級行政區:分爲市轄區、縣、自治縣、縣級市、旗、自治旗、林區、特區;
*/
private String name;
}
java代碼讀取,代碼示例:(用fastjosn解析)
List<Province> provinces = new ArrayList<>();
String file = FileUtils.readFileToString(new File(path), "UTF-8");
JSONObject items = JSONObject.parseObject(file);
for (Map.Entry<String, Object> provinceEntry : items.entrySet()) {
// 一級省級行政區:分爲省、自治區、直轄市、特別行政區;
Province province = new Province();
province.setName(provinceEntry.getKey());
Object citiesObj = provinceEntry.getValue();
for (Map.Entry<String, Object> cityEntry : ((JSONObject) citiesObj).entrySet()) {
// 二級地級行政區:分爲地級市、地區、自治州、盟;
// 至少有1個
City city = new City();
city.setName(cityEntry.getKey());
province.addCity(city);
city.setProvince(province.getName());
Object countiesObj = cityEntry.getValue();
// 三級縣級行政區:分爲市轄區、縣、自治縣、縣級市、旗、自治旗、林區、特區;
// 可以爲空
JSONArray countiesArray = (JSONArray) countiesObj;
for (Object countyObj : countiesArray) {
County county = new County();
county.setName(countyObj.toString());
city.addCounty(county);
county.setProvince(province.getName());
county.setCity(city.getName());
}
}
provinces.add(province);
}