C# 解析省份、城市、区域 json文件

news2025/5/25 9:37:59

一、json文件内容如下,(小程序里好像有用到...):

二、读取包含省份城市区域的json文件,并整理成想要的结果:

 string path = Server.MapPath("/js");
 string file = System.IO.Path.Combine(path, "数据.json");
 string message = "";
 string fielval = readfile(file, ref message);
 if(message=="")
 {
     fielval = fielval.Replace("\n", "").Replace("\t", "").Replace(" ", "");
     JObject json=JObject.Parse(fielval);
     string data = json["data"].ToString();
     string namesel = "福建省";
     Dictionary<string, List<string>> res = new Dictionary<string, List<string>>();
     bool isget = getChild(namesel,"福州市", data,1, ref res);//下面有调用说明
 
     message = "";
 }

三、循环整理数据,计算出想要的结果:

        /// <summary>
        /// 循环整理数据
        /// </summary>
        /// <param name="sfname">省份</param>
        /// <param name="cityname">城市</param>
        /// <param name="children">json值</param>
        /// <param name="ift">第几次循环</param>
        /// <param name="res">返回</param>
        /// <returns></returns>
        private bool getChild(string sfname,string cityname, string children,int ift,ref Dictionary<string, List<string>> res)
        {
            try
            {
                List<Dictionary<string, object>> list = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(children);
                if(ift==1 && !string.IsNullOrEmpty(sfname))
                {
                    //saix 省份
                    var reslst = from u in list where u["name"].ToString() == "" + sfname + "" select u;
                    list = reslst.ToList();
                }
                if(ift==2 && !string.IsNullOrEmpty(cityname))
                {
                    //赛选城市
                    var reslst = from u in list where u["name"].ToString() == "" + cityname + "" select u;
                    list = reslst.ToList();
                }
               
                if (list.Count > 0)
                {
                    ift++;
                    List<string> dic_child = new List<string>();
                    for (int i = 0; i < list.Count; i++)
                    {
                        bool getcl = false;
                        string name = list[i]["name"].ToString().Trim();
                        if (list[i]["children"]!=null)
                        {
                            children = list[i]["children"].ToString().Trim();
                            if (children.Trim().ToLower() != "null" && children.Trim().ToLower() != "")
                            {
                                getcl = true;
                                getChild(name,  cityname, children, ift, ref res);
                            }
                        }
                        else { children = ""; }
                       
                        if(!getcl)
                        {
                            dic_child.Add(name);//, children
                        }
                    }
                    if(ift==1 || !string.IsNullOrEmpty(sfname))
                    {
                        res.Add(sfname, dic_child);
                    }
                    else
                    {
                        res.Add(cityname, dic_child);
                    }
                    

                }
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
          
        }

四、getChild(string sfname,string cityname, string children,int ift,ref Dictionary<string, List<string>> res),调用说明

 
 bool isget = getChild("福建省","福州市", data,1, ref res);//
 当sfname、cityname都有传值,相当于查询cityname下的区域信息,结果如下:
 

 bool isget = getChild("福建省","", data,1, ref res);//
 当只有sfname都有传值,而cityname为空,相当于查询sfname下所有城市及各城市下所有区域信息,结果如下:

五、readfile 方法

 public string readfile(string filename, ref string message)
 {
     string fielval = "";
     try
     {
         if (System.IO.File.Exists(filename))
         {
             using (StreamReader sreader = new StreamReader(filename, Encoding.UTF8))
             {
                 fielval = sreader.ReadToEnd();
                 sreader.Close();
                 sreader.Dispose();
             }
         }
         else
         {
             message = "未找到文件" + filename;
         }
     }
     catch (Exception ex)
     {
         message = ex.Message;
     }
     return fielval;

 }
       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1917861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hi3861 OpenHarmony嵌入式应用入门--华为 IoTDA 设备接入

华为云物联网平台&#xff08;IoT 设备接入云服务&#xff09;提供海量设备的接入和管理能力&#xff0c;可以将自己的 IoT 设备 联接到华为云&#xff0c;支撑设备数据采集上云和云端下发命令给设备进行远程控制&#xff0c;配合华为云物联网平台的服 务实现设备与设备之间的控…

MySQL的约束键多表查询

约束 概念 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。目的&#xff1a;保证数据中数据的正确、有效性和完整性。 外键约束 概念 ​ 外键用来让两张表的数据之间建立连接&#xff0c;从而保证数据的一致性和完整性。 注意&#x…

钉钉扫码登录第三方

钉钉文档 实现登录第三方网站 - 钉钉开放平台 (dingtalk.com) html页面 将html放在 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>登录</title>// jquery<script src"http://code.jqu…

PHP趣味测评微信小程序开发搭建趣味测评流量主变现系统

趣味测评微信小程序&#xff1a;开发搭建&#xff0c;乐在其中&#x1f389; &#x1f31f;【开篇&#xff1a;探索趣味测评的魅力】&#x1f31f; 你是否厌倦了千篇一律的问卷调查&#xff1f;想要来点不一样的互动体验&#xff1f;那么&#xff0c;趣味测评微信小程序绝对是…

为什么大多数过来人还是建议你考一本HCIE

HCIE认证是华为推出的高级网络工程师认证。 然而&#xff0c;对于是否值得考取HCIE&#xff0c;许多人有不同的看法。 有些人质疑它的价值&#xff0c;但也有很多过来人强烈推荐。 今天探讨一番。为什么尽管有质疑声&#xff0c;许多经验丰富的老网工还是建议你考一本HCIE。 01…

自动清理群晖nas中的.TMP文件

公司某个部门需要使用群晖nas共享盘&#xff0c;对人员的相关权限有要求&#xff0c;部分人员对于某个文件夹&#xff0c;以及里面的文件不能有删除权限&#xff0c;在用户被剥夺了删除权限后&#xff0c;造成了一个问题&#xff0c;那就是这些没有删除权限的人员&#xff0c;在…

精益创业方法论在创业实践中的应用:以乔布斯视角探索创新与变革的艺术——张驰咨询

史蒂夫乔布斯以其非凡的愿景、不懈的迭代精神与对产品极致的追求&#xff0c;成为无数创业者心中的灯塔。本文将借鉴乔布斯的创新思维与精益创业方法论相结合&#xff0c;构建一套融合理论与实践的深度框架&#xff0c;旨在指导创业者在不确定的市场环境中高效探索、快速验证并…

jvm 07 GC算法,内存池,对象内存分配

01 垃圾判断算法 1.1引用计数算法 最简单的垃圾判断算法。在对象中添加一个属性用于标记对象被引用的次数&#xff0c;每多一个其他对象引用&#xff0c;计数1&#xff0c; 当引用失效时&#xff0c;计数-1&#xff0c;如果计数0&#xff0c;表示没有其他对象引用&#xff0c;…

Springboot 设置个性化banner

在 Spring Boot 中自定义 banner 的方法有几种&#xff0c;可以通过以下步骤来实现&#xff1a; 1、使用文本文件作为 banner 在 src/main/resources 目录下创建一个名为 banner.txt 的文件。 编辑这个文件&#xff0c;输入想要显示的文本。确保文本中包含换行符和空格…

【排序 - 插入排序 和 希尔排序】

插入排序&#xff08;Insertion Sort&#xff09;是一种简单直观的排序算法&#xff0c;它的工作原理是逐步构建有序序列。在排序过程中&#xff0c;它将未排序的元素逐个插入到已排序的部分中&#xff0c;从而在每次插入时扩展已排序序列的长度。 原理介绍 插入排序的基本思…

mindspore打卡20天之Shufflenet图像分类

ShuffleNet图像分类 当前案例不支持在GPU设备上静态图模式运行&#xff0c;其他模式运行皆支持。 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有…

浅谈后置处理器之边界提取器

浅谈后置处理器之边界提取器 边界提取器&#xff08;Boundary Extractor&#xff09;作为一种常用的后置处理器&#xff0c;主要用于从服务器响应中提取特定内容&#xff0c;这些内容可以是文本、变量或cookies等&#xff0c;以便于后续请求中重用。本文档将详细介绍如何在JMe…

高阶面试-dubbo的学习

SPI机制 SPI&#xff0c;service provider interface&#xff0c;服务发现机制&#xff0c;其实就是把接口实现类的全限定名配置在文件里面&#xff0c;然后通过加载器ServiceLoader去读取配置加载实现类&#xff0c;比如说数据库驱动&#xff0c;我们把mysql的jar包放到项目的…

人员定位系统可以用在哪些方面?为什么这么受欢迎?

人员定位系统大家都不陌生&#xff0c;它也随着科技的发展变得越来越高端、功能也越来越完善了。从一开始的对讲机沟通到后来的蓝牙定位等等&#xff0c;定位系统的精准度越来越高不说&#xff0c;续航能力也越来也强&#xff0c;以往比较单一和迷你的汽车定位产品都能达到一年…

《故障复盘 · 记一次事务用法错误导致的大量锁表问题》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

VS2019使用C#写窗体程序技巧(1)

1、打开串口 private void button1_Click(object sender, EventArgs e){myPort cmb1.Text;mybaud Convert.ToInt32(cmb2.Text, 10);databit 8;parity Parity.None;stopBit StopBits.One;textBox9.Text "2";try{sp new SerialPort(myPort, mybaud, parity, dat…

蓝卓创始人褚健:工业互联网平台技术赋能中小企业数字化转型的实施路径

工业4.0是由工业软件驱动的工业革命&#xff0c;与传统厚重的工业软件不同&#xff0c;supOS就好比嵌入工厂的“安卓系统”。如果把一个工厂当作一台手机&#xff0c;因为有安卓或苹果开放的操作系统&#xff0c;吸引了全世界聪明的人开发了大量APP供人们使用&#xff0c;手机才…

java:将集合中的数据放到文件中

代码实现目标&#xff1a; 将集合中的数据写道文件中通过字符缓冲输出流实现 代码展示 public static void main(String[] args) throws IOException {//创建ArrayList集合ArrayList<Student> array new ArrayList<>();//创建学生对象Student s1 new Student(&…

昇思25天学习打卡营第14天|基于MindSpore的红酒分类实验

背景介绍 本文主要介绍使用MindSpore在部分wine数据集上进行KNN实验。 K近邻算法原理 K近邻算法&#xff08;K-Nearest-Neighbor, KNN&#xff09;是一种用于分类和回归的非参数统计方法&#xff0c;最初由 Cover和Hart于1968年提出(Cover等人,1967)&#xff0c;是机器学习最…

IPv4到IPv6的转换

为何要向IPv6过渡&#xff1a; 随着互联网的飞速发展&#xff0c;越来越多的设备接入网络&#xff0c;IPv4地址资源日益匮乏&#xff0c;已无法满足不断增长的需求。 IP地址定位&#xff1a;IP数据云 - 免费IP地址查询 - 全球IP地址定位平台 IPv6的出现为解决这一问题提供了…