当前位置: 首页 > news >正文

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

一、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;

 }
       

相关文章:

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

一、json文件内容如下&#xff0c;&#xff08;小程序里好像有用到...&#xff09;: 二、读取包含省份城市区域的json文件&#xff0c;并整理成想要的结果&#xff1a; string path Server.MapPath("/js"); string file System.IO.Path.Combine(path, "数据.…...

用C语言写的一个扫雷小游戏

头文件 调用头文件和声明函数 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <time.h> #include <stdlib.h>#define ROW 9 #define COL 9#define ROWS ROW2 #define COLS COL2#define EASY_CONT 10//声明函数 //初始化棋盘函数 void InitB…...

C++——类和对象(初始化列表和运算符重载与静态与友元)

文章目录 初始化列表语法结构定义和使用案例初始化列表初始化常量成员&#xff1a; 注意事项 运算符重载加法运算符重载语法结构示例注意事项 减法运算符重载语法结构示例注意事项 等于运算符重载等于运算符 的重载语法示例注意事项 大于运算符重载大于运算符 > 的重载语法…...

【WPF】图片剪裁-ImageCropping

【WPF】图片剪裁-ImageCropping 背景技术栈实现思路核心代码界面布局Style处理逻辑使用技巧预览下载背景 机缘巧合吧,当时在全网寻找图像剪裁工具,但大都不能满足需求,于是决定动手写。当然如果只是为了完成这么一个功能就没有必要记录了,主要是不依赖与第三方图像库,且实…...

C++的模板(十二):forward模板

标准库的std::forward模板有一个类型T参数。在实际使用时&#xff0c;T取什么值应该不存在疑惑&#xff1a; class A { public:A() {}A(int n):n(n) {}template <class T> A(T &&a);void print(A &&a) { printf("A&&\n"); }void pri…...

docker desktop历史版本安装

1.安装choco Windows安装 choco包管理工具-CSDN博客 2.通过choco安装 下面例子为安装旧版2.3.0.2,其它版本类似 Chocolatey Software | Docker Desktop 2.3.0.2 https://download.docker.com/win/stable/45183/Docker%20Desktop%20Installer.exe choco install docker-des…...

Ubuntu系统成功安装Docker教程

服务器版本&#xff1a; Ubuntu 22.04.3 LTS 1. 卸载旧版本 Docker 的旧版本被称为 docker&#xff0c;docker.io 或 docker-engine 。如果已安装&#xff0c;需要卸载&#xff1a; sudo apt-get remove docker docker-engine docker.io containerd runc2. 更新 apt 软件包 …...

C++ 匹配并提取包括加中括号的日期时间的正则表达式

在C中&#xff0c;你可以使用std::regex库来匹配包含日期和时间的字符串。以下是一个简单的例子&#xff0c;它展示了如何使用正则表达式来匹配形如[YYYY-MM-DD HH:MM:SS]的字符串。include <iostream> #include <string> #include <regex> int main() { …...

一文-深入了解Ansible常见模块、安装和部署

1 Ansible 介绍 Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的&#xff08;集合了众多运维工具 puppet、cfengine、chef、func、fabric的优点&#xff09;自动化运维工具, 其功能实现基于ss…...

etcd的备份与恢复

一 为什么使用etcd 与ZooKeeper相比&#xff0c;etcd更简单&#xff0c;安装、部署和使用更加容易&#xff0c;并且etcd的某些功能是ZooKeeper所没有的。因此&#xff0c;在很多场景下&#xff0c;etcd 比ZooKeeper更受用户的青&#xff0c;具体表现在如下几个方面: 1 etcd更…...

从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望

我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起&#xff0c;这些库的受欢迎程度呈指数级增长。 在这篇文章中&#xff0c;我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…...

【postgresql】pg_dump备份数据库

pg_dump 介绍 pg_dump 是一个用于备份 PostgreSQL 数据库的实用工具。它可以将数据库的内容导出为一个 SQL 脚本文件或其他格式的文件&#xff0c;以便在需要时进行恢复或迁移。 基本用法 pg_dump [选项] [数据库名] 命令选项 -h 或 --host&#xff1a;指定数据库服务器的主…...

服务器的80和443端口关闭也能申请SSL证书

一、简介 在服务器的80和443端口关闭的情况下&#xff0c;确实可以申请SSL证书&#xff0c;但申请过程和方法会根据证书类型和验证方式的不同而有所差异。 通常如果是网站域名申请SSL证书&#xff0c;哪怕服务器的80、443端口都打不开&#xff0c;也可以通过DNS解析的方式来验…...

Odoo17应用、模型、字段

新建最简应用 先启用开发人员模式。 新建一个没有菜单项的空壳应用(模块/插件)&#xff1a; 必须至少包含 2 个文件&#xff1a; __manifest__.py 文件和文件 __init__.py 。 该 __init__.py 文件目前可以保持为空&#xff0c;我们将在下一章中返回。另一方面&#xff0c;该…...

Airtest的控制手机滑动位置偏差修正方法总结

提起Airtest的控制手机滑动位置&#xff0c;就会想起swipe&#xff0c;因为这种方法比较常见&#xff0c;对于没有精度控制的朋友完全够用&#xff0c; 我现在遇到精度控制时&#xff0c;大家都觉得精度不够&#xff0c;现在我对滑动精度控制&#xff0c;找到比较好的方法&…...

【机器学习】Grid Search: 一种系统性的超参数优化方法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Grid Search: 一种系统性的超参数优化方法引言什么是Grid Search&#xff1f;Gr…...

Laravel Passport:API认证的瑞士军刀

Laravel Passport&#xff1a;API认证的瑞士军刀 在现代Web应用中&#xff0c;API的安全认证是一个核心问题。Laravel Passport提供了一个全面的解决方案&#xff0c;用于构建OAuth2.0认证服务器。它使得API的认证变得简单而强大&#xff0c;支持多种认证方式&#xff0c;包括…...

SpringBoot Bean管理

我们知道可以通过Spring当中提供的注解Component以及它的三个衍生注解&#xff08;Controller、Service、Repository&#xff09;来声明IOC容器中的bean对象&#xff0c;同时我们也学习了如何为应用程序注入运行时所需要依赖的bean对象&#xff0c;也就是依赖注入DI。 本篇主要…...

Qt5.12.2安装教程

文章目录 文章介绍下载连接安装教程 文章介绍 安装Qt5.12.2 下载连接 点击官网下载 安装包下载完毕 安装教程 点开设置&#xff0c;添加临时储存库&#xff0c;复制连接“https://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/” 点击测试&#xff0…...

2024年大数据高频面试题(中篇)

文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…...

Spring AI + DeepSeek 实战:5分钟搞定一个能听懂人话的数据库查询工具

Spring AI DeepSeek 实战&#xff1a;5分钟搞定一个能听懂人话的数据库查询工具 在数据驱动的时代&#xff0c;数据库查询是每个开发者绕不开的日常任务。但当你面对产品经理频繁变更的需求&#xff0c;或是运营同事临时提出的数据提取请求时&#xff0c;反复编写和调试SQL语句…...

别再搞混了!AUTOSAR通信栈里,PduR和CanTp到底为谁打工?一个DCM诊断请求的完整旅程

AUTOSAR通信栈揭秘&#xff1a;诊断请求如何穿越PduR与CanTp的迷宫 在汽车电子系统的开发中&#xff0c;诊断通信就像车辆的"健康检查系统"&#xff0c;而AUTOSAR架构中的通信栈则是确保这些诊断命令能够准确传达的神经网络。许多工程师第一次接触AUTOSAR通信栈时&am…...

在AutoDL上从零部署YOLO训练环境:新手避坑指南

1. 为什么选择AutoDL部署YOLO训练环境 第一次接触目标检测任务时&#xff0c;我和大多数新手一样被各种环境配置问题折磨得够呛。本地显卡跑不动YOLOv5&#xff0c;租用云服务器又担心操作复杂&#xff0c;直到发现了AutoDL这个宝藏平台。它最大的优势就是把复杂的GPU实例管理简…...

深入解析BUCK、BOOST与Charge Pump电路的设计与应用

1. 开关电源基础&#xff1a;为什么需要BUCK、BOOST和Charge Pump&#xff1f; 刚入行那会儿&#xff0c;我总觉得电源设计就是个"变压器加整流桥"的事&#xff0c;直到某次项目里把12V电池直接怼到3.3V的MCU上——随着一缕青烟升起&#xff0c;我才明白电压转换这门…...

知识点总结--day09(Mybatis及Mybatis-Plus)

目录 1、系统架构流程? 2结果集映射? 3mapper传参? 4、xml常用配置 5、缓存机制 6、分页插件 7、Mybatis-Plus常用API 末尾页 1、系统架构流程? 执行过程&#xff1a; mybatis配置 mybatis-config.xml&#xff0c;名称可变&#xff0c;此文件作为mybatis的全局配置…...

Ubuntu常用的命令

ls -l # 输出当前文件夹下的所有文件的权限大小信息 ls -l 文件名 # 输出当前文件的权限大小信息 du -sh # 查看文件夹下所有文件的大小总和 df -h # 查看当前文件系统各分区的大小 hdparm -Tt /dev/sda1 # 查看分区磁盘的速度 ls -l | grep "^-" | wc -l # 当前目…...

AutoDL云服务器避坑指南:从PyTorch到Jupyter,手把手搞定GPU环境配置

AutoDL云服务器GPU环境配置实战&#xff1a;从镜像选择到Jupyter避坑全攻略 第一次在AutoDL这类云GPU平台上配置深度学习环境时&#xff0c;那种既兴奋又忐忑的心情我至今记忆犹新。看着琳琅满目的镜像选项和复杂的版本匹配要求&#xff0c;稍有不慎就会陷入"版本地狱&qu…...

用51单片机+无源蜂鸣器播放《两只老虎》完整教程(附代码与乐理速成)

用51单片机驱动无源蜂鸣器演奏《两只老虎》全流程解析 第一次听到单片机播放音乐时&#xff0c;那种"机器唱歌"的奇妙感至今难忘。作为电子爱好者入门必备的趣味项目&#xff0c;用蜂鸣器演奏音乐不仅能巩固定时器、中断等核心知识&#xff0c;更能将枯燥的理论转化为…...

Kazam vs OBS:Ubuntu 24.04 屏幕录制工具对比与选择指南

Kazam vs OBS&#xff1a;Ubuntu 24.04 屏幕录制工具深度评测与实战选择 在数字内容创作爆发的时代&#xff0c;屏幕录制已成为游戏实况、在线教学、产品演示的标配技能。对于Ubuntu 24.04用户而言&#xff0c;Kazam和OBS Studio这两款开源工具常被拿来比较——前者以轻量简洁著…...

STM32智能甲鱼养殖系统设计与实现

基于STM32的智能甲鱼养殖系统设计与实现1. 项目概述1.1 系统背景现代水产养殖行业正面临从传统人工管理向智能化转型的关键时期。甲鱼作为对水质环境敏感的特种水产品&#xff0c;其养殖过程中需要持续监测多项水质参数并保持稳定环境。传统人工监测方式存在响应滞后、精度不足…...