最近在使用项目中的区域表时,发现了有区域缺失的情况,于是找了个较新的省市区数据来解析更新到区域表中。

数据来源:https://blog.csdn.net/supergao222/article/details/79102140

下面使用的是fastJson来解析。看到analysisJson方法就行了,getAreaCodeList是构造自己的数据进行的操作,因人而异。

public class AreaCodeAnalysis {@Testpublic void getAreaCodeList() {File file = new File("C:\\Users\\Administrator\\Desktop\\areaJson.txt");String jsonString = txt2String(file);JSONObject jsonObject = JSON.parseObject(jsonString);// 解析jsonList<Area> areaList = analysisJson(jsonObject);// 得到areaList之后,就可以构造自己想要的数据,然后进行其它操作,如插入到数据库中等List<MainAreaCode> areaCodeList = getAreaCodeList(areaList);}// 解析json得到areaListpublic List<Area> analysisJson(JSONObject jsonObject) {List<Area> areaList = new ArrayList<>();Set<String> set = jsonObject.keySet();for (Iterator<String> it = set.iterator(); it.hasNext();) {Area area = new Area();String key = it.next();Object obj = jsonObject.get(key);// 已经解析到区,obj.toString()的值为“··区”,如“蓬江区”// 不设辖区的市,如“{"child":[],"name":"东莞市"}”// 则不继续向下解析if (!obj.toString().endsWith("}") && !obj.toString().startsWith("{")) {area.setName(obj.toString());} else if (obj.toString().indexOf("[]") == 9) {JSONObject jo = JSON.parseObject(obj.toString());area.setName(jo.get("name").toString());} else {area = JSON.parseObject(obj.toString(), Area.class);area.setAreaChildList(analysisJson(area.getChild()));}area.setAreaCode(key);areaList.add(area);}return areaList;}// 读取txtpublic String txt2String(File file) {StringBuilder result = new StringBuilder();try {BufferedReader br = new BufferedReader(new FileReader(file));// 构造一个BufferedReader类来读取文件String s = null;while ((s = br.readLine()) != null) {// 使用readLine方法,一次读一行result.append(s);}br.close();} catch (Exception e) {e.printStackTrace();}return result.toString();}// 构造自己的MainAreaCode数据public List<MainAreaCode> getAreaCodeList(List<Area> areaList) {List<MainAreaCode> areaCodeList = new ArrayList<>();for (Area area : areaList) {MainAreaCode areaCode = new MainAreaCode();areaCode.setProvince(area.getName());areaCode.setAreaCode(area.getAreaCode());areaCode.setAreaLevel("0");areaCode.setAreaStatus("1");areaCodeList.add(areaCode);if (null != area.getAreaChildList()) {areaCodeList.addAll(getSecondAreaCodeList(area.getAreaChildList(), area.getName()));}}return areaCodeList;}// 市级数据public List<MainAreaCode> getSecondAreaCodeList(List<Area> areaList, String province) {List<MainAreaCode> areaCodeList = new ArrayList<>();for (Area area : areaList) {MainAreaCode areaCode = new MainAreaCode();areaCode.setProvince(province);areaCode.setCity(area.getName());areaCode.setAreaCode(area.getAreaCode());areaCode.setAreaLevel("1");areaCode.setAreaStatus("1");areaCodeList.add(areaCode);if (null != area.getAreaChildList()) {areaCodeList.addAll(getThirdAreaCodeList(area.getAreaChildList(), province, area.getName()));}}return areaCodeList;}// 区/县级数据public List<MainAreaCode> getThirdAreaCodeList(List<Area> areaList, String province, String city) {List<MainAreaCode> areaCodeList = new ArrayList<>();for (Area area : areaList) {MainAreaCode areaCode = new MainAreaCode();areaCode.setProvince(province);areaCode.setCity(city);areaCode.setCountry(area.getName());areaCode.setAreaCode(area.getAreaCode());areaCode.setAreaLevel("2");areaCode.setAreaStatus("1");areaCodeList.add(areaCode);}return areaCodeList;}
}
public class Area {private String areaCode;private String name;private JSONObject child;// 存放暂时未解析的jsonChildprivate List<Area> areaChildList;// 已解析完毕childpublic String getAreaCode() {return areaCode;}public void setAreaCode(String areaCode) {this.areaCode = areaCode;}public String getName() {return name;}public void setName(String name) {this.name = name;}public JSONObject getChild() {return child;}public void setChild(JSONObject child) {this.child = child;}public List<Area> getAreaChildList() {return areaChildList;}public void setAreaChildList(List<Area> areaChildList) {this.areaChildList = areaChildList;}}

解析全国省市区Json数据相关推荐

  1. 全国省市区JSON数据-转

    版权声明:本文为CSDN博主「PJ-ZH」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/zhouhaisun ...

  2. 全国省市区json数据

    {"110000": {"name": "北京市","child": {"110100": {&qu ...

  3. 全国省市区json读取与解析

    需求:有上百万文章需要剔除标题中含有省市区的文章,通过读取全国省市区存入数据库,并清除省市区中的空格,重复,循环比对解决. 全国省市区json,并通过java解析存入到数据库中. TIP:为确保准确, ...

  4. 【Java 解析全国地址】Java 利用正则表达式完美解析全国省市区地址

    Java 利用正则表达式完美解析全国省市区地址 一.问题场景描述 最近在项目中遇到了一个全国地址解析的一个场景,前端会传来一个字符串,后端需自动解析出 xx省xx市xx区+详细地址 的这种格式. 因为 ...

  5. gson解析mysql城市json数据_Gson解析复杂的json数据

    首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些: 1 public classJsonBean {2 publicString a;3 public Listb;4 ...

  6. Android中怎获取json,Android应用中如何解析获取的json数据

    Android应用中如何解析获取的json数据 发布时间:2020-11-24 17:10:08 来源:亿速云 阅读:107 作者:Leah 这篇文章将为大家详细讲解有关Android应用中如何解析获 ...

  7. 最新最完整的全国省市级json数据

    最新最完整的全国省市级json数据 [ { "province":"北京市", "city":[ { "name":&q ...

  8. Esp8266 进阶之路28 【高级篇】教你轻松自如使用cJson在乐鑫 esp8266 如何解析一段json数据以及如何生成一段json数据。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  9. 怎么解析Json数据,然后把解析到的Json数据填充到布局中?

    一.首先把需要解析的Json数据如下所示: {"res_code": 0,"res_error": "","res_body&qu ...

最新文章

  1. 2018-4-8模拟退火算法
  2. BZOJ 2707: [SDOI2012]走迷宫 [高斯消元 scc缩点]
  3. 先定一个小目标,自己封装个ajax
  4. js中的正则表达式入门
  5. Windows下VisualSVN Server的安装与配置方法(图文)
  6. Oracle_杂货箱_不定期更新
  7. [系统安全] 六.逆向分析之条件语句和循环语句源码还原及流程控制
  8. JavaScript知识笔记(二)——事件
  9. MYSQL5.6 设置root用户密码
  10. 笔记本电脑处理器_华硕推出首款第11代英特尔处理器VivoBook,ZenBook笔记本电脑...
  11. milvus入门学习
  12. 升级到 MySQL 8.0,Facebook 付出的代价。。
  13. webmagic之爬取数据存入HDFS
  14. java开发周报变日报_程序员专用的日报、周报、月报、季报自动生成器!
  15. 【Verilog 常见设计】(0)二进制码和格雷码互转 Verilog 实现
  16. cmt obm odm 代工模式oem_OEM、ODM、OBM、OPM概念,作用与区别
  17. 从看脸到读心:深度理解人的视觉技术走到哪了?
  18. 《算法设计与分析》第十三周作业
  19. oracle几何体数据类型,4.2 SDO_GEOMETRY类型、属性和值
  20. 单自由度振动系统 matlab,单自由度系统的振动及matlab分析

热门文章

  1. 优质供应商选择标准_6供应商选择原则
  2. trac插件---due date
  3. springboot + JPA 配置双数据源
  4. 海思3518EV300 liteos sdk编译
  5. 腾讯QQ,msn,百度Hi,淘宝的用户链接及网页在线客服代码
  6. 绿盟rsasnx3_铭冠网安绿盟RSASNX3-S远程安全评估系统 V6.0(NSFOCUS RSAS V6.0)
  7. 一款好用的内存清理工具
  8. 电气设计参考图纸,有高低压电气设计图纸、自控设计图纸和污水处理工程电气自控图
  9. 人工智能在各领域的应用
  10. C语言中耳熟能详的printf与scanf