1. 直接去政府网站搞到代码列表
2. 去掉台湾,香港,澳门
3. 转成JSON
4. 可以用了
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.lang3.StringUtils; import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.google.common.collect.Maps; public class AreaCodeConvert { @SuppressWarnings("unchecked") public static void main(String[] args) throws Exception { // 到政府网站复制列表,保存到txt中,我找到的2016.3的 // http://www.mca.gov.cn/article/sj/xzqh/2018/201804-12/201804-06041553.html // 直辖市和特别行政区比较讨厌,只有省的数据,没有市,或者没有区县,自己手动添加 // 需要手动添加的有:北京,天津,上海,重庆,台湾,香港,澳门 File f = new File("D:\\areaCode.txt"); // 注意转码 BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(f), "GBK")); String l = null; Map<String, Object> map = Maps.newLinkedHashMap(); while ((l = r.readLine()) != null) { boolean isProvince = false, isCity = false, isRegion = false; // 左代码,右名称 String[] split = StringUtils.split(l); String code = split[0]; String name = split[1]; // 代码规律:省级的都是xx0000,市级都是xxyy00 isProvince = "0000".equals(StringUtils.substring(code, 2, 6)); if (!isProvince) { isCity = "00".equals(StringUtils.substring(code, 4, 6)); } if (!isCity) { isRegion = true; } if (isProvince) { // 存省级 Map<String, Object> pMap = Maps.newLinkedHashMap(); map.put(StringUtils.substring(code, 0, 2), pMap); pMap.put("code", code); pMap.put("name", name); } else if (isCity) { // 市级存到升级的children中 Map<String, Object> pMap = (Map<String, Object>) map.get(StringUtils.substring(code, 0, 2)); Map<String, Object> cMap = (Map<String, Object>) pMap.get("children"); if (cMap == null) { cMap = Maps.newLinkedHashMap(); pMap.put("children", cMap); } Map<String, Object> ccMap = Maps.newLinkedHashMap(); cMap.put(StringUtils.substring(code, 0, 4), ccMap); ccMap.put("code", code); ccMap.put("pCode", StringUtils.substring(code, 0, 2) + "0000"); ccMap.put("name", name); } else if (isRegion) { // 区级存到市级的children中 System.out.println(code); Map<String, Object> pMap = (Map<String, Object>) map.get(StringUtils.substring(code, 0, 2)); Map<String, Object> cMap = (Map<String, Object>) pMap.get("children"); if (cMap == null) { String cCode = StringUtils.substring(code, 0, 4) + "00"; cMap = Maps.newLinkedHashMap(); Map<String, Object> ccMap = Maps.newLinkedHashMap(); ccMap.put("code", cCode); ccMap.put("pCode", pMap.get("code")); ccMap.put("name", pMap.get("name")); cMap.put(cCode, ccMap); pMap.put("children", cMap); } Map<String, Object> ccMap = (Map<String, Object>) cMap.get(StringUtils.substring(code, 0, 4)); // 坑爹的情况是有些是县级市,有些没有对应市的县,不过根据列表发现只是找到上一个就好了 if (ccMap == null) { List<Entry<String, Object>> cList = new ArrayList<Entry<String, Object>>(cMap.entrySet()); ccMap = (Map<String, Object>) cList.get(cList.size() - 1).getValue(); } List<Map<String, Object>> rList = (List<Map<String, Object>>) ccMap.get("children"); if (rList == null) { rList = Lists.newArrayList(); ccMap.put("children", rList); } Map<String, Object> rMap = Maps.newLinkedHashMap(); rMap.put("code", code); rMap.put("pCode", StringUtils.substring(code, 0, 4) + "00"); rMap.put("name", name); rList.add(rMap); } } // Map不好看,转成List格式的 List<Map<String, Object>> result = new ArrayList<Map<String, Object>>((Collection<? extends Map<String, Object>>) map.values()); for (Map<String, Object> m : result) { Map<String, Object> c = (Map<String, Object>) m.get("children"); m.put("children", new ArrayList<Map<String, Object>>((Collection<? extends Map<String, Object>>) c.values())); } ObjectMapper jsonMapper = new ObjectMapper(); jsonMapper.setSerializationInclusion(Include.NON_DEFAULT); jsonMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); System.out.println(jsonMapper.writeValueAsString(result)); // 关闭,也懒得写try...catch了 r.close(); } }
相关推荐
在“全国行政区划代码(JSON格式).zip”这个压缩包中,包含了两个文件:`location.json`和`location.min.json`。这两个文件都是JSON格式,但它们可能有所差异。`location.json`通常是未经压缩或精简的原始数据文件...
行政区划代码和名称数据是关于中国各级行政区域的唯一标识符和对应的名称,这些数据在很多IT应用中都非常重要,例如地理位置服务、人口统计分析、物流配送等。在这个压缩包中,包含了两种不同格式的数据——数组格式...
4. 区划代码是中国行政区域的唯一标识,便于数据管理和检索。 5. 压缩包中的JSON文件可能包含不同级别的地理信息,如省级、市级和县级,适配不同的展示需求。 6. 文件命名遵循区划代码,方便开发者通过代码快速定位...
4. **Properties**:包含行政区划代码和名称等属性,例如省级代码、市级代码、区县级代码以及对应的行政名称。 行政区划代码在中国是标准化的,通常由6位数字组成,前两位代表省份,中间两位代表城市,后两位代表...
全国行政区划JSON文件是用于表示中国各级行政区域的数据文件,主要以JSON(JavaScript Object Notation)格式存储。这种格式的数据易于阅读和编写,同时也被广泛用于数据交换。JSON是一种轻量级的数据交换格式,它...
总的来说,全国行政区域json格式文件为开发者提供了一种标准化、结构化的中国行政区域数据,便于在各种应用中处理和利用这些数据。无论是地图应用、数据分析还是其他领域,这样的数据集都有着广泛的应用价值。
全国行政区划代码表是用于标识中国各级行政区域的一种标准化编码体系。这个数据库包含了从国家到县(区)级的行政单位,通常用于地理信息系统(GIS)、统计分析、邮政编码匹配、地址标准化等应用场景。该资源提供了...
在提供的压缩包中,"echarts地理数据"可能包含了省级、市级、区县级等多个级别的行政区划信息,这些信息被转换成了JS(JavaScript)和JSON(JavaScript Object Notation)格式,便于ECharts地图组件解析和渲染。...
在行政区划数据中,每个键可能代表一个地区代码、名称、上级行政区编码等信息,而对应的值则是具体的行政区域名称或编码。 行政区划数据的主要内容可能包括以下字段: 1. **地区代码**:每个行政区域都有唯一的编码...
1. "2020年最新全国行政区划element多级选择value-city.json":这个文件专门设计用于Element UI的多级选择组件,其数据结构可能按照省-市-区县的层次构建,每个节点包含了对应的名称(如省份、城市名)和值(通常是...
JSON(JavaScript Object ...而处理全国行政区域数据时,还需要考虑到行政区划的变更,定期更新JSON文件以保持数据的准确性。此外,优化加载和解析性能,避免一次性加载过多数据,也是前端开发中需要注意的问题。
在这个场景中,"2018年最新省市区街道行政区域划分JSON版" 是一个包含中国2018年行政区域详细信息的JSON文件,主要涉及省级行政区、地级市、区县以及街道的层级划分。 在JSON文件`regions`中,我们可以期待看到以下...
中国城市列表JSON数据,中国所有...中国总共有23个省、5个自治区、4个直辖市、2个特别行政区。 然后决定到市级别(包含县级市) 参考维基百科以及百度百科 最终得出以下数据json格式——市级别(包含县级市),总数:694个
- **城市代码的维护与更新**:由于行政区划的调整或其他原因,城市代码可能会发生变化。因此,对于依赖于这些代码的应用程序来说,定期更新城市代码列表是非常重要的。 - **多语言支持**:虽然本例中的城市名称...
标题中的“省-市-地区_县_名称及代码JSON数组.rar”表明这是一个包含中国行政区域数据的压缩文件,主要用于存储省级、市级、地区级(可能是区或县级市)的名称及其对应代码,数据格式为JSON数组。JSON(JavaScript ...
在这个“gis基础素材 2018年最新中国行政区划省市县边界.zip”压缩包中,包含的是2018年中国最新的省级、市级和县级行政区域的边界矢量数据。 矢量数据是GIS中的一种重要数据类型,它以点、线、面的形式表示地物,...
2024年最新全国乡、县、区、市、省城市名称、编码json文件,“省份、城市、区县、乡镇” 四级联动数据
综上所述,这个压缩包提供了关于中国省、市、县(区)级行政区划代码的多格式数据资源,涵盖了从原始数据到处理后的形式,以及适合编程和数据分析的格式。无论是开发地理信息系统、进行人口统计分析,还是构建涉及...
描述中的“最全”意味着这个文件涵盖了中国所有的行政区域,包括省级行政区、地级市、县级市、区、县等,甚至可能包括一些特别行政区和自治州等特殊行政单位。而“地理坐标”指的是每个行政区域的经纬度信息,这是...
4. 行政区划代码:了解中国的行政区划代码标准,例如6位的GB/T 2260标准,以及如何将这些代码与实际地理位置关联起来。 5. 数据处理:如何清洗、过滤和处理数据,以满足特定项目需求。 6. 数据可视化:使用工具(如...