简单说明一下

1、这是一份json文件,这是因为全国的省市信息一般不会改变,如果需要xml格式的数据,可以自行读取json,然后进行xml序列化就好了,

2、数据包含全国所有城市信息,包括直辖市,地级市,县级市等等,如果只需要地级市,可按类型进行刷选

3、博主整理了两份json,读者可自行选择

由于文件比较大(其实也才几百K(-_-!!)),博客园提交不上去,所以只能放在百度云上了:https://pan.baidu.com/s/1z3EV2JB30LSvnE0l6MwoXg (提取码:98ph)

一、只包含省市信息

这部分的json文件中只包含省市信息,以满足一些简单的需求,比如只需要限制在城市级别的需求会好一些,主要特点:

1、只包含省市信息,市区分直辖市、地级市和县级市等等

2、包含港澳台城市

3、json文件中没有省份城市代码,读者可自行根据自己的需求创建代码

文件中的字段说明如下:

{
“provinceType”: 1,     //省份类型:1-直辖市,2-省,3-自治区,4-特别行政区
“provinceName”: “北京市”, //省份名称
“city”: [
{
“cityName”: “北京市”, //城市名称
“areaType”: 1,     //区域类型:1-直辖市,2-地级市,3-县级市,4-地区,5-自治州,6-盟,7-特别行政区
“isCapital”: true   //是否是省会或者中心城市
}
]
}
  接着写一个辅助类来进行读取,就是压缩包中的CityHelper:   
public class CityHelper
{
static Province[] provinces;

    static CityHelper(){var assemby = typeof(CityHelper).Assembly;var stream = assemby.GetManifestResourceStream($"{assemby.GetName().Name}.Resources.city.json");using (var sr = new StreamReader(stream, Encoding.UTF8)){var json = sr.ReadToEnd();provinces = JsonConvert.DeserializeObject<Province[]>(json);}}/// <summary>/// 获取所有的省份信息/// </summary>/// <returns></returns>public static Province[] GetAllProvinces(){return provinces;}/// <summary>/// 获取指定名称的省份/// </summary>/// <param name="provinceName"></param>/// <returns></returns>public static Province FindProvinceByName(string provinceName){return provinces.FirstOrDefault(f => f.ProvinceName == provinceName);}
}
public class Province
{/// <summary>/// 省份名称/// </summary>public string ProvinceName { get; set; }/// <summary>/// 省份类型/// </summary>public ProvinceType ProvinceType { get; set; }public City[] City { get; set; }
}
public enum ProvinceType
{直辖市 = 1, 省 = 2, 自治区 = 3, 特别行政区 = 4
}
public class City
{/// <summary>/// 城市名称/// </summary>public string CityName { get; set; }/// <summary>/// 区域类型/// </summary>public AreaType AreaType { get; set; }/// <summary>/// 是否是省会/// </summary>public bool IsCapital { get; set; }
}
public enum AreaType
{直辖市 = 1, 地级市 = 2, 县级市 = 3, 地区 = 4, 自治州 = 5, 盟 = 6, 特别行政区 = 7
}

CityHelper
   CityHelper
  之后就是使用CityHelper获取省市信息来实现自己的业务逻辑了

二、更加齐全的省市县信息

这份文件内容比上面的更加齐全,基本上已经涵盖了第一种,但是只适合国内的城市,主要特点:

1、文件中的城市只包含国内的城市,不包含港澳台地区

2、文件中数据更加详细,包含省市县

3、文件中各省市县均采用身份证开头6位作为编码

4、城市同样区分直辖市、地级市和县级市等等

5、因为包含的信息多,所以文件可能比较大,如果觉得放内存不方便,读者可自行将数据初始化到redis或者数据库中

其中的字段说明如下:

{
“provinceCode”: “110000”,   //省份代码
“provinceName”: “北京市”,    //省份名称
“provinceType”: 1,        //省份类型:直辖市 = 1, 省 = 2, 自治区 = 3
“cities”: [
{
“cityCode”: “110100”,    //城市代码
“cityName”: “市辖区”,     //城市名称
“cityType”: 1,         //城市类型:市辖区 = 1, 直辖市 = 2, 地级市 = 3, 地区 = 4, 自治州 = 5, 盟 = 6
“isCapital”: true,      //是否是省会
“counties”: [
{
“countyCode”: “110101”,  //县代码
“countyName”: “东城区”, //县名称
“isCity”: false       //是否是县级市
}
]
}
]
}
  同样,压缩包中提供了一个辅助类CityHelper:

CityHelper
  using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Utility
{
public class CityHelper
{
static Province[] provinces;

    static CityHelper(){//这部分也可以加载到redis中var assemby = typeof(CityHelper).Assembly;var stream = assemby.GetManifestResourceStream($"{assemby.GetName().Name}.Resources.city.json");using (var sr = new StreamReader(stream, Encoding.UTF8)){var json = sr.ReadToEnd();provinces = JsonConvert.DeserializeObject<Province[]>(json);}}/// <summary>/// 获取所有的省份信息/// </summary>/// <returns></returns>public static Province[] GetProvinces(){return provinces;}/// <summary>/// 根据省份代码获取省份信息/// </summary>/// <param name="provinceCode"></param>/// <returns></returns>public static Province GetProvinceByCode(string provinceCode){return GetProvinces().FirstOrDefault(f => f.ProvinceCode == provinceCode);}/// <summary>/// 模糊查询指定名称的省份/// </summary>/// <param name="provinceName"></param>/// <returns></returns>public static Province[] FindProvinceByName(string provinceName){return GetProvinces().Where(f => f.ProvinceName.Contains(provinceName)).ToArray();}/// <summary>/// 使用指定的省份代码获取城市/// </summary>/// <param name="provinceCode"></param>/// <returns></returns>public static City[] GetCities(string provinceCode){return GetProvinces().FirstOrDefault(f => f.ProvinceCode == provinceCode)?.Cities ?? new City[0];}/// <summary>/// 根据城市代码获取城市/// </summary>/// <param name="cityCode"></param>/// <returns></returns>public static City GetCityByCode(string cityCode){return GetProvinces().SelectMany(f => f.Cities.Where(c => c.CityCode == cityCode)).FirstOrDefault();}/// <summary>/// 模糊查询指定名称的城市/// </summary>/// <param name="cityName"></param>/// <returns></returns>public static City[] FindCityByName(string cityName){return GetProvinces().SelectMany(f => f.Cities.Where(c => c.CityName.Contains(cityName))).ToArray();}/// <summary>/// 根据城市代码获取所有的县/// </summary>/// <param name="cityCode"></param>/// <returns></returns>public static County[] GetCounties(string cityCode){return GetCityByCode(cityCode)?.Counties ?? new County[0];}/// <summary>/// 根据县代码获取县/// </summary>/// <param name="countyCode"></param>/// <returns></returns>public static County GetCountyByCode(string countyCode){return GetProvinces().SelectMany(f => f.Cities.SelectMany(c => c.Counties.Where(m => m.CountyCode == countyCode))).FirstOrDefault();}/// <summary>/// 根据省份代码获取所有的县/// </summary>/// <param name="provinceCode"></param>/// <returns></returns>public static County[] GetContriesByProvinceCode(string provinceCode){return GetProvinceByCode(provinceCode)?.Cities?.SelectMany(f => f.Counties)?.ToArray() ?? new County[0];}/// <summary>/// 根据县名称模糊查询县/// </summary>/// <param name="countyName"></param>/// <returns></returns>public static County[] FindCountyByName(string countyName){return GetProvinces().SelectMany(f => f.Cities.SelectMany(c => c.Counties.Where(m => m.CountyName.Contains(countyName)))).ToArray();}
}
public class Province
{/// <summary>/// 省份代码/// </summary>public string ProvinceCode { get; set; }/// <summary>/// 省份名称/// </summary>public string ProvinceName { get; set; }/// <summary>/// 省份类型/// </summary>public ProvinceType ProvinceType { get; set; }/// <summary>/// 城市/// </summary>public City[] Cities { get; set; }
}
public enum ProvinceType
{直辖市 = 1, 省 = 2, 自治区 = 3
}
public class City
{/// <summary>/// 测试代码/// </summary>public string CityCode { get; set; }/// <summary>/// 城市名称/// </summary>public string CityName { get; set; }/// <summary>/// 城市类型/// </summary>public CityType CityType { get; set; }/// <summary>/// 是否是省会/// </summary>public bool IsCapital { get; set; }/// <summary>/// 县/// </summary>public County[] Counties { get; set; }
}
public enum CityType
{市辖区 = 1, 直辖市 = 2, 地级市 = 3, 地区 = 4, 自治州 = 5, 盟 = 6
}
public class County
{/// <summary>/// 县代码/// </summary>public string CountyCode { get; set; }/// <summary>/// 县名称/// </summary>public string CountyName { get; set; }/// <summary>/// 是否是县级市/// </summary>public bool isCity { get; set; }
}

}

CityHelper

注:至于读取,各种语言应该都可以读取json,这里我使用C#,将上面的json保存到一个city.json文件中,然后将文件条件到项目中,设置文件的生成操作为嵌入的资源,因为是json文件操作,所有引入Newtonsoft.Json包,如下图:

包含全国所有省份、城市、县的一份json文件相关推荐

  1. 2018 全国所有省份,城市的json文件(全)

    很多人上网搜索全国的省市区地址,我也搜了很多,但是实际用起来都很是不全,在此,必须要感谢一波我的朋友,前几天花了相当多的时间整理出来了最新最全的地址,你想要的什么香港.台湾等最新的新区都有,肯定是有实 ...

  2. 使用爬虫获取省份降雨情况,并生成json文件

    先上代码 import requests import json import reheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Wi ...

  3. 全国主要省份城市的DNS服务器地址

    香港 ns1.netvigator.com 205.252.144.228 澳门 vassun2.macau.ctm.net 202.175.3.8 深圳 ns.shenzhen.gd.cn 202. ...

  4. js快速查看用户ip地址是哪个省份城市的

    js怎么查看用户ip地址是哪个省份城市的 1.引入js文件 <script src="https://pv.sohu.com/cityjson?ie=utf-8">&l ...

  5. 世界级/全国/省份/城市/县区4级联动

    世界级/全国/省份/城市/县区4级联动 Js为腾讯qq的LocList.xml 需要转为json格式的js文件 (在QQ安装目录可以找到loclist.xml文件 C:\ProgramFiles\Te ...

  6. 使用Navicat生成全国省份城市SQL数据库

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.表 二.使用步骤 1.引入库 2.添加城市数据 前言 网上找了关于省份-城市的数据库,不合适自己的,现在自己写一个 ...

  7. 世界各国 省市县 省份 城市 三级数据库表 mysql

    世界各国 省市县 省份 城市 三级数据库表 全数据版本(包含各个国家的省县区)下载地址:https://download.csdn.net/download/vip_mcgrady/13686019 ...

  8. 全国各个省份市区县明细数据

    全国总共有23个省.5个自治区.4个直辖市.2个特别行政区. 此数据包含省.市.区.县数据,共2886个.--更新于2023年6月10日 费了不少时间,暂时应该没有比我更全的了~~~细致到区县了 包括 ...

  9. 地区省份城市sql信息

    //国家 INSERT INTO base_parameter (parent_code,dtype,code,cname,parameterStatus,remark) VALUES ('0','c ...

最新文章

  1. 最新曝光的iPhone大漏洞:传文件会泄露个人隐私,2年多了苹果知而不改
  2. 【双系统下给ubuntu18.04扩容】
  3. python分形几何_使用 Python 绘制分形: Koch 曲线、Julia 集、Mandelbrot 集
  4. 用友报表java打不开怎么加载,点报表没反应怎么回事啊?演示账套也打不开。...
  5. java 往excel中写数据库,poi将数据写入excel表格-怎么用java把数据库里的数据写入到excel表中...
  6. GTK中 ToolBar详细说明
  7. K8S知道,K9S又是个什么鬼?
  8. 中国省市区乡县名称代码对照表
  9. EMOS部署及管理和部署EMOS邮件服务器
  10. QListView实现自定义Item
  11. mmd 到 blender 到 ue4/ue5 缩放比例相关的处理流程
  12. scanf指定分隔符号
  13. My Eighty-first Page - 打家劫舍 - By Nicolas
  14. 手把手教你在浏览器(chrom,edge)上安装Tampermonkey(油猴)(附所需所有内容链接)
  15. 【基本功】Java魔法类:Unsafe应用解析
  16. [赛后总结]G2022 Regular Contest 04总结
  17. 同一个PDF如何同时在两个窗口并排显示?
  18. Linux指令整理(从入门到高级)+Shell语法
  19. Mac上的EditPlus-BBEdit快捷键大全
  20. IPv6解决方案ND防攻击技术白皮书

热门文章

  1. CcTalk (网络协议)(转)
  2. 【沁恒CH32学习】——RISC-V架构学习笔记
  3. 如何将word的内容提取出来转成txt
  4. 东芝败局:重大业务选择一错再错
  5. python模拟支付宝蚂蚁森林的能量产生过程_Python+appium自动化实例(一):使用Python3+appium实现自动收取支付宝蚂蚁森林能量...
  6. 删库不跑路大法,真的好
  7. Chrome 商店 Spam 插件套路分析
  8. 2019年天猫度软件服务年费缴纳折扣优惠及结算标准
  9. 图片转成gif怎么弄?
  10. 智慧化工园区管理平台综合解决方案