生成省市區JSON

省市區 學習記錄

https://xiangyuecn.github.io/AreaCity-JsSpider-StatsGov/

package cn.serverx.sx.your;import cn.hutool.core.io.FileUtil;
import cn.serverx.sx.your.vo.DistrictNode;
import com.alibaba.fastjson2.JSON;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.nio.charset.Charset;
import java.util.List;public class TempCityJsonHandler {public static void main(String[] args) throws FileNotFoundException {RandomAccessFile accessFile = new RandomAccessFile("D:\\workspace\\blzcgl-backend\\sx-admin\\src\\main\\resources\\static\\city.json", "r");StringBuffer buffer = new StringBuffer();String line = null;while ((line = FileUtil.readLine(accessFile, Charset.defaultCharset())) != null) {buffer.append(line.trim());}List<DistrictNode> nodeList = JSON.parseArray(buffer.toString(), DistrictNode.class);List<DistrictNode> newNodeList = Lists.newArrayList();List<String> checkCode = Lists.newArrayList();for (DistrictNode provinceNode : nodeList) {if (checkCode.contains(provinceNode.getCode())) {throw new RuntimeException("重復code:" + provinceNode.getCode());} else {checkCode.add(provinceNode.getCode());}DistrictNode newPro = new DistrictNode();newPro.setCode(provinceNode.getCode());newPro.setName(provinceNode.getName());newPro.setChildList(Lists.newArrayList());newNodeList.add(newPro);List<DistrictNode> cityNodes = provinceNode.getChildList();int totalCityNode = cityNodes.size();int cityIndex = 1;for (DistrictNode cityNode : cityNodes) {if (checkCode.contains(cityNode.getCode())) {throw new RuntimeException("重復code:" + cityNode.getCode());} else {checkCode.add(cityNode.getCode());}DistrictNode newCity = new DistrictNode();newCity.setCode(cityNode.getCode());newCity.setName(cityNode.getName());newCity.setChildList(Lists.newArrayList());newPro.getChildList().add(newCity);List<DistrictNode> areaNodes = cityNode.getChildList();int totalAreaNode = areaNodes.size();int areaIndex = 1;for (DistrictNode areaNode : areaNodes) {if (checkCode.contains(areaNode.getCode())) {throw new RuntimeException("重復code:" + areaNode.getCode());} else {checkCode.add(areaNode.getCode());}DistrictNode newArea = new DistrictNode();newArea.setCode(areaNode.getCode());newArea.setName(areaNode.getName());newCity.getChildList().add(newArea);if (areaIndex++ == totalAreaNode) {DistrictNode aNode = new DistrictNode();aNode.setName("其他");String code = StringUtils.substring(areaNode.getCode(), 0, 4);aNode.setCode(code + "99");newCity.getChildList().add(aNode);}}if (cityIndex++ == totalCityNode) {DistrictNode cNode = new DistrictNode();cNode.setName("其他");String code = StringUtils.substring(cityNode.getCode(), 0, 2);cNode.setCode(code + "9900");DistrictNode aNode = new DistrictNode();aNode.setName("其他");aNode.setCode(code + "9999");cNode.setChildList(Lists.newArrayList(aNode));newPro.getChildList().add(cNode);}}}System.out.println(JSON.toJSONString(checkCode));System.out.println(JSON.toJSONString(newNodeList));FileUtil.writeString(JSON.toJSONString(newNodeList), new File("D:\\data\\district.json"), Charset.defaultCharset());}
}

package cn.serverx.sx.your.vo;import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;import java.util.List;@Data
public class DistrictNode {@JSONField(name = "Name")private String name;@JSONField(name = "Code")private String code;private String parentCode;@JSONField(name = "ChildList")private List<DistrictNode> childList;}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72271.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72271.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72271.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

醫療APP開發如何實現跨機構數據互通

醫療APP開發如何實現跨機構數據互通 在數字化醫療時代,醫療APP開發已成為連接醫療機構、患者和醫療資源的重要橋梁。然而,如何實現跨機構的數據互通,成為醫療APP開發中的一大挑戰。本文將探討如何通過醫療APP開發實現跨機構數據互通,提升醫療服務效率和患者體驗。我們將涵…

自定義Linux網絡協議的開發與測試

在當今快速發展的技術領域中,定制化網絡協議可以為特定的應用場景提供靈活而強大的解決方案。本文將詳細介紹如何在Linux系統上開發一個自定義網絡協議,并編寫相應的用戶空間程序進行測試。所有步驟基于2025年3月11日的時間點完成。 開發自定義協議內核模塊 定義協議和實現…

PySide(PyQT)的mouseMoveEvent()和hoverMoveEvent()的區別

在 PySide中&#xff0c;mouseMoveEvent 和 hoverMoveEvent 都是用于處理鼠標移動相關操作的事件&#xff0c;但它們之間存在明顯的區別&#xff1a; 事件觸發條件 ? mouseMoveEvent&#xff1a; 當鼠標在對應的圖形項&#xff08;如 QGraphicsPixmapItem&#xff09…

級聯樹SELECTTREE格式調整

步驟&#xff1a; 1、將全部列表設置成Map<Long, List<Obejct>> map的格式&#xff0c;方便查看每個父級對應的子列表&#xff0c;減少循環次數 2、對這個map進行遞歸&#xff0c;重新進行級聯樹的集合調整&#xff0c;將子集放置在對應的childs里面。 public Dyna…

詳解數據庫范式

范式 1. 第一范式&#xff08;1NF&#xff09;2. 第二范式&#xff08;2NF&#xff09;3. 第三范式&#xff08;3NF&#xff09;4. BC范式&#xff08;BCNF&#xff0c;Boyce-Codd Normal Form&#xff09;5. 第四范式&#xff08;4NF&#xff09;6. 第五范式&#xff08;5NF&a…

一窺DeepSeek開源EPLB項目:揭開技術背后的面紗

摘要 在DeepSeek開源DualPipe項目的同一天&#xff0c;EPLB項目也正式對外公開。EPLB&#xff08;Enhanced Pipeline Balancing&#xff09;并非一蹴而就的奇跡&#xff0c;而是經過長時間的研發與優化。該項目旨在通過改進管道平衡機制&#xff0c;提升系統的穩定性和效率。本…

Unity進階課程【二】Mask 組件的使用 UI遮罩效果以及透明摳圖效果

Unity組件講解 Mask 時隔多年&#xff0c;今天咱們繼續進階課程&#xff0c;這幾年變化很大&#xff0c;但是一直還是從事Unity行業&#xff0c;行業雖難&#xff0c;依舊堅持&#xff0c;以后會養成習慣&#xff0c;定期更新&#xff0c;希望小伙伴們監督&#xff0c;有想學習…

汽車無鑰匙啟動系統不使用傳統機械鑰匙啟動汽車

汽車無鑰匙啟動系統 定義 汽車無鑰匙啟動系統&#xff08;Keyless Start System&#xff09;&#xff0c;啟動車輛時不用掏擰鑰匙&#xff0c;只需把鑰匙放在包內或口袋里&#xff0c;按下車內按鍵或擰動導板即可使發動機點火。它無需插入鑰匙&#xff0c;通過點按按鍵或旋轉…

Webpack 和 Vite 的主要區別

Webpack 和 Vite 的主要區別&#xff0c;從構建機制、開發體驗、生產優化等多個維度進行對比&#xff1a; 1. 構建機制與速度 Webpack 全量打包&#xff1a;啟動時必須分析所有模塊依賴關系&#xff0c;進行全量打包&#xff0c;生成 Bundle 文件。項目越大&#xff0c;冷啟動時…

【Python】Python 3.11安裝教程

一、Python 3.11安裝包下載 1. Python 3.11下載與安裝 Download Python | Python.org 下載完成包含以下文件&#xff1a; 二、python3.11安裝步驟 1.右鍵以管理員身份運行安裝程序。 2.勾選【Add Python…】然后點擊【Customize…】。 3.頁面點擊【Next】。 4.勾選【Install …

如何處理PHP中的編碼問題

如何處理PHP中的編碼問題 在PHP開發過程中&#xff0c;編碼問題是一個常見且棘手的問題。無論是處理用戶輸入、數據庫交互&#xff0c;還是與外部API通信&#xff0c;編碼問題都可能導致數據亂碼、解析錯誤甚至安全漏洞。本文將深入探討PHP中的編碼問題&#xff0c;并提供一些…

【畢業論文格式】word分頁符后的標題段前間距消失

文章目錄 【問題描述】 分頁符之后的段落開頭&#xff0c;明明設置了標題有段前段后間距&#xff0c;但是沒有顯示間距&#xff1a; 【解決辦法】 選中標題&#xff0c;選擇邊框 3. 選擇段前間距&#xff0c;1~31磅的一個數 結果

【實戰ES】實戰 Elasticsearch:快速上手與深度實踐-附錄-3-從ES 7.x到8.x的平滑遷移策略

&#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 &#x1f449; 點擊關注不迷路 附錄-版本升級指南 3-Elasticsearch 7.x 到 8.x 平滑遷移策略指南1. 升級必要性分析1.1 版本特性對比1.2 兼容性評估矩陣 2. 預升級準備清單2.1 環境檢查表2.2 數據備份策略 3. 分階段…

Android,Java,Kotlin 確保線程順序執行的多種實現方式

在多線程編程中&#xff0c;有時需要確保一個線程必須等待另一個線程執行完畢后再執行。本文將介紹幾種常見的方法來實現這一需求&#xff0c;并提供詳細的代碼示例。 1. 使用 Thread.join() Thread.join() 是最簡單直接的方法&#xff0c;它會讓當前線程等待目標線程執行完畢…

論文調研 | 一些開源的AI代碼生成模型調研及總結【更新于250313】

本文主要介紹主流代碼生成模型&#xff0c;總結了基于代碼生成的大語言模型&#xff0c;按照時間順序排列。 在了解代碼大語言模型之前&#xff0c;需要了解代碼相關子任務 代碼生成 文本生成代碼(Text to code):根據自然語言描述生成代碼 重構代碼&#xff08;Refactoring …

【QT】-一文說清楚QT定時器怎么用

在 Qt 中&#xff0c;定時器&#xff08;QTimer&#xff09;是用來定時執行某些任務的非常有用的類。它可以幫助你在指定的時間間隔后重復執行某個函數。常見的用法是啟動一個定時器&#xff0c;每過一段時間自動執行某個操作&#xff0c;比如更新 UI、檢查狀態或發送數據等。 …

iOS OC匹配多個文字修改顏色和字號

1、傳入字符串數組&#xff0c;通過NSMutableAttributedString修改匹配文字 可以根據需要搞成匹配單個字符串 - (NSAttributedString *)applyFontSizeToText:(NSString *)text matchStrings:(NSArray<NSString *> *)matchStrings {NSMutableAttributedString *attribut…

3DS模擬器使用(pc+安卓)+金手指+存檔互傳

1、引言 3ds模擬器已經能夠在手機端近乎完美模擬了&#xff0c;那么多的3ds游戲&#xff0c;比玩手機游戲舒服多了。 本人是精靈寶可夢的老玩家&#xff0c;從第一世代就一直在玩&#xff0c;剛耍完NDS的第五世代&#xff0c;黑白系列。現在到寶可夢XY了&#xff0c;需要在3d…

Java EE Web環境安裝

Java EE Web環境安裝 一、JDK安裝與測試&#xff08;Windows環境&#xff09; 1. 安裝JDK 官網下載&#xff1a;Oracle JDK&#xff08;選擇Windows x64 Installer&#xff09;雙擊安裝包&#xff0c;按向導完成安裝 ? 2. 環境變量配置 右鍵【此電腦】→【屬性】→【高級…

探索CSS魔法:3D翻轉與漸變光效的結合

隨著前端技術的不斷發展&#xff0c;CSS不再僅僅局限于樣式設計&#xff0c;它也成為了實現富有互動性的動畫和特效的強大工具。本篇文章將向大家展示如何利用CSS的3D變換和漸變光效&#xff0c;打造一張“神秘卡片”&#xff0c;通過簡單的代碼實現炫酷的視覺效果。 1. 初識神…