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文件内容如下,(小程序里好像有用到...): 二、读取包含省份城市区域的json文件,并整理成想要的结果: 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++——类和对象(初始化列表和运算符重载与静态与友元)
文章目录 初始化列表语法结构定义和使用案例初始化列表初始化常量成员: 注意事项 运算符重载加法运算符重载语法结构示例注意事项 减法运算符重载语法结构示例注意事项 等于运算符重载等于运算符 的重载语法示例注意事项 大于运算符重载大于运算符 > 的重载语法…...
【WPF】图片剪裁-ImageCropping
【WPF】图片剪裁-ImageCropping 背景技术栈实现思路核心代码界面布局Style处理逻辑使用技巧预览下载背景 机缘巧合吧,当时在全网寻找图像剪裁工具,但大都不能满足需求,于是决定动手写。当然如果只是为了完成这么一个功能就没有必要记录了,主要是不依赖与第三方图像库,且实…...
C++的模板(十二):forward模板
标准库的std::forward模板有一个类型T参数。在实际使用时,T取什么值应该不存在疑惑: 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教程
服务器版本: Ubuntu 22.04.3 LTS 1. 卸载旧版本 Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,需要卸载: sudo apt-get remove docker docker-engine docker.io containerd runc2. 更新 apt 软件包 …...
C++ 匹配并提取包括加中括号的日期时间的正则表达式
在C中,你可以使用std::regex库来匹配包含日期和时间的字符串。以下是一个简单的例子,它展示了如何使用正则表达式来匹配形如[YYYY-MM-DD HH:MM:SS]的字符串。include <iostream> #include <string> #include <regex> int main() { …...
一文-深入了解Ansible常见模块、安装和部署
1 Ansible 介绍 Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的(集合了众多运维工具 puppet、cfengine、chef、func、fabric的优点)自动化运维工具, 其功能实现基于ss…...
etcd的备份与恢复
一 为什么使用etcd 与ZooKeeper相比,etcd更简单,安装、部署和使用更加容易,并且etcd的某些功能是ZooKeeper所没有的。因此,在很多场景下,etcd 比ZooKeeper更受用户的青,具体表现在如下几个方面: 1 etcd更…...
从 Pandas 到 Polars 十八:数据科学 2025,对未来几年内数据科学领域发展的预测或展望
我在2021年底开始使用Polars和DuckDB。我立刻意识到这些库很快就会成为数据科学生态系统的核心。自那时起,这些库的受欢迎程度呈指数级增长。 在这篇文章中,我做出了一些关于未来几年数据科学领域的发展方向和原因的预测。 这篇文章旨在检验我的预测能力…...
【postgresql】pg_dump备份数据库
pg_dump 介绍 pg_dump 是一个用于备份 PostgreSQL 数据库的实用工具。它可以将数据库的内容导出为一个 SQL 脚本文件或其他格式的文件,以便在需要时进行恢复或迁移。 基本用法 pg_dump [选项] [数据库名] 命令选项 -h 或 --host:指定数据库服务器的主…...
服务器的80和443端口关闭也能申请SSL证书
一、简介 在服务器的80和443端口关闭的情况下,确实可以申请SSL证书,但申请过程和方法会根据证书类型和验证方式的不同而有所差异。 通常如果是网站域名申请SSL证书,哪怕服务器的80、443端口都打不开,也可以通过DNS解析的方式来验…...
Odoo17应用、模型、字段
新建最简应用 先启用开发人员模式。 新建一个没有菜单项的空壳应用(模块/插件): 必须至少包含 2 个文件: __manifest__.py 文件和文件 __init__.py 。 该 __init__.py 文件目前可以保持为空,我们将在下一章中返回。另一方面,该…...
Airtest的控制手机滑动位置偏差修正方法总结
提起Airtest的控制手机滑动位置,就会想起swipe,因为这种方法比较常见,对于没有精度控制的朋友完全够用, 我现在遇到精度控制时,大家都觉得精度不够,现在我对滑动精度控制,找到比较好的方法&…...
【机器学习】Grid Search: 一种系统性的超参数优化方法
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 Grid Search: 一种系统性的超参数优化方法引言什么是Grid Search?Gr…...
Laravel Passport:API认证的瑞士军刀
Laravel Passport:API认证的瑞士军刀 在现代Web应用中,API的安全认证是一个核心问题。Laravel Passport提供了一个全面的解决方案,用于构建OAuth2.0认证服务器。它使得API的认证变得简单而强大,支持多种认证方式,包括…...
SpringBoot Bean管理
我们知道可以通过Spring当中提供的注解Component以及它的三个衍生注解(Controller、Service、Repository)来声明IOC容器中的bean对象,同时我们也学习了如何为应用程序注入运行时所需要依赖的bean对象,也就是依赖注入DI。 本篇主要…...
Qt5.12.2安装教程
文章目录 文章介绍下载连接安装教程 文章介绍 安装Qt5.12.2 下载连接 点击官网下载 安装包下载完毕 安装教程 点开设置,添加临时储存库,复制连接“https://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/” 点击测试࿰…...
2024年大数据高频面试题(中篇)
文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…...
【学术干货免费领】200+学术海报模板免费领|科研展示零成本,高效出图不内耗 | 学术会议海报模板,适配国际国内各类学术场合 | 硕博研究生必需,全学科适配,助力科研成果高光出圈
重磅福利来袭!200学术海报模板,全程免费领取,零成本解锁科研展示新方式!适配以下各类科研相关人群:硕博研究生群体包括硕士研究生和博士研究生适用于不同研究阶段:从开题报告撰写到学位论文完成特别适合需要…...
nanobot实操手册:Qwen3-4B模型温度(temperature)、top_p、max_tokens参数详解
nanobot实操手册:Qwen3-4B模型温度(temperature)、top_p、max_tokens参数详解 1. nanobot简介与快速上手 nanobot是一款超轻量级的个人人工智能助手,灵感来源于OpenClaw项目。它最大的特点是代码量极小,仅需约4000行…...
OpenClaw安全实践:GLM-4.7-Flash本地化部署的权限控制指南
OpenClaw安全实践:GLM-4.7-Flash本地化部署的权限控制指南 1. 为什么需要关注OpenClaw的权限控制? 去年夏天,我在整理电脑上的财务报告时,无意中发现OpenClaw自动将我的税务文件同步到了一个陌生目录。这个意外让我意识到——当…...
YOLOv8自定义检测头踩坑记:手把手教你修复‘NotImplementedError: new_detect task‘错误
YOLOv8自定义检测头实战:从报错到修复的深度解析 当你在YOLOv8框架中尝试添加一个名为new_detect的自定义检测头时,突然遇到NotImplementedError: new_detect task错误,这可能会让你感到困惑。本文将带你深入理解YOLOv8的任务调度机制&#x…...
CTF信息收集入门:从BUUCTF‘粗心的小李’题目看Git泄露的常见利用方式
CTF信息收集实战:Git泄露漏洞的深度利用与防御策略 在CTF竞赛的Web安全赛道上,信息收集能力往往决定着解题的成败。当新手面对看似空白的网页时,常会陷入无从下手的困境——这正是"粗心的小李"这类题目的设计初衷。不同于常规的SQL…...
LangGraph实战:从零构建并部署一个多功能智能体
1. LangGraph框架概述:新一代智能体开发范式 在人工智能应用开发领域,智能体(Agent)技术正经历着从简单问答到复杂任务执行的进化。LangGraph作为LangChain生态中的新一代开发框架,彻底改变了传统链式结构的局限性。我…...
示波器安全操作与高压测量实践指南
示波器安全使用指南:从基础操作到高压测量实践1. 示波器使用安全概述示波器作为电子工程师的核心调试工具,其正确使用直接关系到测量结果的准确性和操作人员的人身安全。在实际工程应用中,约35%的测量事故源于不规范的示波器操作,…...
C++的std--ranges算法自定义比较器与等价关系在集合操作中的运用
C20引入的std::ranges库为算法操作带来了革命性改进,其中自定义比较器与等价关系的灵活运用,显著提升了集合操作的表达能力。通过精确控制元素间的比较逻辑,开发者能够实现更复杂的业务需求,例如处理自定义对象集合或实现非标准排…...
基于训练RBF神经网络的车速信息时序预测Matlab模型
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
百川2-13B-4bits量化版精度测试:OpenClaw自动化任务准确率对比
百川2-13B-4bits量化版精度测试:OpenClaw自动化任务准确率对比 1. 测试背景与实验设计 上周在部署OpenClaw自动化工作流时,我遇到了一个现实问题:本地显卡只有12GB显存,跑不动原版13B模型。于是尝试了百川2-13B的4bits量化版本&…...
