C#解析JSON
https://blog.csdn.net/weixin_43046974/article/details/131449900
C#解析JSON
- 1. JSON定义
- 2. JSON一般构成及解析方法
- 3. 解析举例子
-
- 1. JSON对象解析,只包含一层对象{}
- 2. 嵌套JSON对象解析,包含多层对象{}
- 3. JSON数组解析1(数组循环遍历)
- 4. JSON数组解析2(使用index获取数据,index从0开始计算)
- 5. JSON 对象中的数组,一层对象{}中包含数组[]
- 6. 嵌套 JSON 对象中的数组,多层对象{}包含数组[]
1. JSON定义
全称“JavaScript Object Notation(JavaScript对象表示法)”,JSON 是存储和交换文本信息的语法。
举例:
[{"id": 2,"name": "星河爆破","number": 999},{"id": 3,"name": "九星连珠","number": 9},{"id": 4,"name": "一语成谶","number": 999}
]
学习JSON基础教程:学习JSON基础教程
在线JSON解析及格式化验证网站:在线JSON解析及格式化验证网站
2. JSON一般构成及解析方法
JSON序列化与反序列化
JSON序列化:将对象转换成JSON 字符串
JSON反序列化:将JSON 字符串转换成对象
JSON结构(2种)
(1)对象结构:{}
{key1:value1,key2:value2...}
key的数据类型:字符串value的数据类型:字符串、数值、null、json数组[]、json对象{}
(2)数组结构:[]
JSON数组结构:[value1,value2......]
value的数据类型:字符串、数值、null、json数组[]、json对象{}
C#代码解析JSON
可使用Visual Studio调试代码,使用C#中的Newtonsoft库来解析JSON,添加引用
using Newtonsoft.Json
using Newtonsoft.Json.Linq
解析规则(重要)
针对对象结构{},使用JObject解析
针对数组结构[],使用JArray解析
3. 解析举例子
1. JSON对象解析,只包含一层对象{}
JSON文本:
{"name":"张三","name_en":"zhangssan"
}
解析代码如下:
string jsonText = "{\"name\":\"张三\",\"name_en\":\"zhangssan\"}";
//解析对象JObject
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
//获取此对象key="name"和key="name_en"的值
string zone = jo["name"].ToString();
string zone_en = jo["name_en"].ToString();
Console.WriteLine(zone);
Console.WriteLine(zone_en);
2. 嵌套JSON对象解析,包含多层对象{}
JSON文本:
{"allname":{"name":"张三","name_en":"zhangsan"}
}
解析代码如下:
string jsonText = "{\"allname\":{\"name\":\"张三\",\"name_en\":\"zhangsan\"}}";
//解析对象JObject
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
//获取此对象中key="allname"下key="name"的值
string zone = jo["allname"]["name"].ToString();
string zone_en = jo["allname"]["name_en"].ToString();
Console.WriteLine(zone);
Console.WriteLine(zone_en);
3. JSON数组解析1(数组循环遍历)
JSON文本:
[{"a":"a1","b":"b1"},{"a":"a2","b":"b2"}
]
解析代码如下:
string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]";
//解析数组JArray
JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);
//循环获取数组中的内容
for(int i = 0; i < jArray.Count; i++)
{//解析对象JObjectJObject j = JObject.Parse(jArray[i].ToString());//获取此对象key="a"的值string a = j["a"].ToString();Console.WriteLine(a);
}
4. JSON数组解析2(使用index获取数据,index从0开始计算)
JSON文本:
[{"a":"a1","b":"b1"},{"a":"a2","b":"b2"}
]
解析代码如下:
string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]";
//解析数组JArray
JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);
//获取数组jArray中第1个(从第0开始计算)key="a"的值
string str = jArray[1]["a"].ToString();
Console.WriteLine(str);
5. JSON 对象中的数组,一层对象{}中包含数组[]
JSON文本:
{"name":"网站","num":3,"sites":["Google","Runoob","Taobao"]
}
解析代码如下:
string jsonText = "{\"name\":\"网站\", \"num\":3, \"sites\":[\"Google\",\"Runoob\",\"Taobao\"]}";
//解析对象JObject
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string sites = jo["sites"].ToString();
//解析数组JArray
JArray jArray = (JArray)JsonConvert.DeserializeObject(sites);
//获取数组sites jArray中第0个(从第0开始计算)的值
string sitesdetails = jArray[0].ToString();
Console.WriteLine(sitesdetails);
6. 嵌套 JSON 对象中的数组,多层对象{}包含数组[]
JSON文本:
{"name":"网站","num":2,"sites": [{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },{ "name":"Taobao", "info":[ "淘宝", "网购" ] }]
}
解析代码如下:
string jsonText = "{\"name\":\"网站\",\"num\":2,\"sites\":[{\"name\":\"Google\",\"info\":[\"Android\",\"Google搜索\",\"Google翻译\"]},{\"name\":\"Taobao\",\"info\":[\"淘宝\",\"网购\"]}]}";
//解析对象JObject
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string sites = jo["sites"].ToString();
//解析数组JArray
JArray jArray = (JArray)JsonConvert.DeserializeObject(sites);
//循环遍历sites数组
for (int i = 0; i < jArray.Count; i++)
{//解析对象JObjectJObject j = JObject.Parse(jArray[i].ToString());string info = j["info"].ToString();//解析数组JArrayJArray jArray2 = (JArray)JsonConvert.DeserializeObject(info);//循环遍历info数组for (int k = 0; k < jArray2.Count; k++){Console.WriteLine(jArray2[k]);}
相关文章:
C#解析JSON
https://blog.csdn.net/weixin_43046974/article/details/131449900 C#解析JSON 1. JSON定义2. JSON一般构成及解析方法3. 解析举例子 1. JSON对象解析,只包含一层对象{}2. 嵌套JSON对象解析,包含多层对象{}3. JSON数组解析1(数组循环遍历&…...
AI图像识别算法助力安全生产*提升风险监测效率---豌豆云
2024年开年来安全生产事故频发,工厂爆炸、工程坍陷等重大安全生产事故的发生再次为我们敲响了警钟。 安全生产是企业发展的生命线,而传统的安全监测手段存在盲区和延迟,难以及时发现和应对潜在风险。 AI图像识别算法通过利用先进的计算机视…...

CSS技巧:实现两个div在同一行显示的方法
css如何让两个div在同一行显示 - web开发 - 亿速云 在Web开发中,经常遇到需要将多个元素水平排列在同一行的情况。其中一个常见的需求是将两个div元素放置在同一行上,使它们并排显示。在本文中,我们将介绍几种实现这一效果的CSS方法。 1. 使…...

【Unity】Node.js安装与配置环境
引言 我们在使用unity开发的时候,有时候会使用一些辅助工具。 Node.js就是开发中,经常会遇到的一款软件。 1.下载Node.js 下载地址:https://nodejs.org/en 2.安装Node.js ①点击直接点击Next下一步 ②把协议勾上,继续点击…...

Vue3:使用 Composition API 不需要 Pinia
在 Vue.js 开发的动态环境中,在单个组件中处理复杂的业务逻辑可能会导致笨重的文件和维护噩梦。虽然 Pinia 提供集中式状态管理,但仅依赖它来处理复杂的业务逻辑可能会导致代码混乱。本文探讨了使用 Composition API 的替代方法,说明开发人员…...
ExoPlayer 播放视频黑屏的解决方法
最近项目中在使用 ExoPlayer 来进行视频的播放,开发过程中遇到了部分视频打开后黑屏的问题,报错日志如下。 E Audio codec error android.media.MediaCodec$CodecException: Error 0xe E Playback error androidx.media3.exoplayer.ExoPlaybackExcept…...

C语言初阶—数组
数组是一组相同类型元素的集合。 在C99标准之前,数组的大小必须是常量或常量表达式。 在C99标准之后,数组的大小可以是变量,可以支持变长数组,但变长数组不能初始化。 不完全初始化,剩余的元素默认初始化为0 。 数组访…...
飞桨(PaddlePaddle)数据预处理教程
文章目录 飞桨(PaddlePaddle)数据预处理教程1. 安装飞桨2. 了解飞桨的数据预处理方法3. 应用单个数据预处理方法4. 组合多个数据预处理方法5. 在数据集中应用数据预处理5.1 在框架内置数据集中应用5.2 在自定义数据集中应用 6. 总结 飞桨(Pad…...

MYSQL C++链接接口编程
使用MYSQL 提供的C接口来访问数据库,官网比较零碎,又不想全部精读一下,百度CSDN都是乱七八糟的,大部分不可用 官网教程地址 https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-examples-connecting.html 网上之所以乱七八糟,主要是MYSQL提供了3个接口两个包,使用…...
并发编程中常见的设计模式,c++多线程如何设计
C多线程设计(任务的“多对一”、“一对多”、“多对多”情况 该如何设计线程?) C书籍中并未找到对多线程设计,有很完整详细的总结!!C并发编程书籍中也只是一些理论或则零散的多线程实例。无奈,…...

解决android studio build Output中文乱码
1.效果如下所示: 代码运行报错的时候,Build Output报的错误日志中中文部分出现乱码,导致看不到到底报的什么错。 2.解决办法如下: 点击Android studio开发工具栏的Help-Edit Custom VM Options....,Android studio会…...

[云原生] K8s之pod进阶
一、pod的状态说明 (1)Pod 一直处于Pending状态 Pending状态意味着Pod的YAML文件已经提交给Kubernetes,API对象已经被创建并保存在Etcd当中。但是,这个Pod里有些容器因为某种原因而不能被顺利创建。比如,调度不成功(…...

[Unity3d] 网络开发基础【个人复习笔记/有不足之处欢迎斧正/侵删】
TCP/IP TCP/IP协议是一 系列规则(协议)的统称,他们定义了消息在网络间进行传输的规则 是供已连接互联网的设备进行通信的通信规则 OSI模型只是一个基本概念,而TCP/IP协议是基于这个概念的具体实现 TCP和UDP协议 TCP:传输控制协议,面向连接,…...
Tomcat的配置文件
Tomcat的配置文件详解 一.Tomcat的配置文件 Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中,主要有以下几个: 1.server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息&#x…...

猴子吃桃问题(python版)
文章预览: 题目python解法一:运行结果 python解法二:运行结果 python解法三:运行结果 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。 第二天早…...
C语言入门到精通之练习49:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的 *。
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的 *。 程序分析:无。 实例 #include<stdio.h> #include<stdlib.h> int main() {int n,i,j;printf("请输入…...
如何在Windows轻量应用服务器上安装和配置SSH?
如何在Windows轻量应用服务器上安装和配置SSH? 检查OpenSSH的可用性:首先,需要以管理员身份打开PowerShell并运行命令Get-WindowsCapability - Online | Where-Object Name - like OpenSSH*来检查OpenSSH服务是否可用。如果服务未启动或不可…...

leetcode日记(36)全排列
想思路想了很久……思路对了应该会很好做。 我的思路是这样的:只变化前n个数字,不断增加n,由2到nums.size(),使用递归直到得到所有结果 代码如下: class Solution { public:vector<vector<int>> permut…...

Flink:动态表 / 时态表 / 版本表 / 普通表 概念区别澄清
博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…...

异常网络下TCP的可靠服务机制(慢启动、拥塞避免、快重传、快恢复)
目录 TCP超时重传拥塞控制概述慢启动和拥塞避免下面讲解发送端如何判断拥塞发生。 快速重传和快速恢复 本文描述TCP在异常网络下的处理方式 以保证其可靠的数据传输的服务 TCP超时重传 tcp服务能够重传其超时时间内没有收到确认的TCP报文段,tcp模块为每一个报文段都…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...

Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...