中国省市县数据_收货地址

前段时间搞一个收货地址:

一、网上找了一下阿里云中国省市县数据接口,主要如下:

省(全国各省):http://datavmap-public.oss-cn-hangzhou.aliyuncs.com/areas/csv/100000_province.json

市(以安徽为例):http://datavmap-public.oss-cn-hangzhou.aliyuncs.com/areas/csv/340000_city.json

县:http://datavmap-public.oss-cn-hangzhou.aliyuncs.com/areas/csv/341700_district.json

然后发现有部分数据不对,比如河南的市、县,然后咋办嘞。

em.....最后发现网上调用这些借口也不一定好,没网就尴尬了。

最后搞到了全国各省市县的json文件,才几kb,对,占内存就是这么小,读取还方便。

二、本地读取省市县更方便(内容几百kb)。

1、json文件奉上(参考网上内容):https://download.csdn.net/download/welfare8888/12330710

2、本地对其的解析(采用c# 语言)。只需要输入AdressAreaLoad.S.GetAreaDic(对应区域key)即可。附上自己测试数据的正确性:

using System.Collections;

public class AdressAreaLoad : TSingleton<AdressAreaLoad>
    {
        Dictionary<string, object> m_DicArea;
        public override void OnSingletonInit()
        {
            base.OnSingletonInit();
//adress的路径,加载(根据自己需求可进行更改)
            TextAsset json = Resources.Load("Json/adress") as TextAsset;
//采用了MiniJSONV_Json来进行json的解析
            m_DicArea = MiniJSONV_Json.Deserialize(json.text) as Dictionary<string, object>;
        }

       //只需要调用本行就行
        public Dictionary<string, object> GetAreaDic(string key)
        {
            return m_DicArea[key] as Dictionary<string, object>;
        }

//该方法为测试json数据是否正确
        public void TestJson()
        {
            string str1 = "0";
            foreach (var item in GetAreaDic(str1))
            {
                string str2 = string.Format("{0},{1}", str1, item.Key);
                Dictionary<string, object> dic = GetAreaDic(str2);
                if (dic == null || dic.Count == 0)
                {
                    Log.e("str2 = " + str2);
                    continue;
                }
                foreach (var city in dic)
                {
                    if (item.Value.ToString() == city.Value.ToString())
                    {
                        Log.e("city   item.Value  = " + item.Value);
                    }
                    string str3 = string.Format("{0},{1}", str2, city.Key);
                    Dictionary<string, object> dic33 = GetAreaDic(str3);
                    if (dic33 == null || dic33.Count == 0)
                    {
                        Log.e("str2 = " + str3);
                        continue;
                    }
                    foreach (var area in dic33)
                    {
                        if (area.Value.ToString() == city.Value.ToString())
                        {
                            Log.e("area  = item.Value  = " + item.Value);
                        }
                    }
                }
            }
        }
    }
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值