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

C#__对Json文件的解析和序列化

 

    Json:
    存储和交换文本信息的语法。(类似XML,语法独立)
    一种轻量级的数据交换格式。(更小,更快,更易解析)
    
    语法规则: 
    数据在键值对里面,数据由逗号分隔开。
    用花括号保存对象,用方括号保存数组。

    Josn值:
    数字(整型或浮点型)
    字符串(在双引号中)
    逻辑值(true 或 false)
    数组(在方括号中)
    null

 

 // skill.json

[{"id": 1,"name": "zhongji","damage": 200},{"id": 2,"name": "huixuanzhan","damage": 300},{"id": 1,"name": "sanduansha","damage": 500}
]

//Hero.json

{"name": "Huozhong","maxHP": 15000,"type": "Marksman","skillList": [{"id": 1,"name": "zhongji","damage": 200},{"id": 2,"name": "huixuanzhan","damage": 300},{"id": 1,"name": "sanduansha","damage": 500}]
}

 

// Skill.cs

    class Skill{public int id { get; set; }public string name { get; set; }public int damage { get; set; }}

// Hero.cs 

    class Hero{public string Name { get; set; }public int MaxHP { get; set; }public string Type { get; set; }public List<Skill> SkillList { get; set; }}

 

// Program.cs

    class Program{static void Main(string[] args){// 定义一个Skill类的数组,将skill.json文件字符串反序列化(json字符串转换为一个字符串类对象)Skill[] skillArray = JsonConvert.DeserializeObject<Skill[]>(File.ReadAllText("skill.json"));foreach (Skill s in skillArray){Console.WriteLine(s.id + "," + s.name + "," + s.damage);/*1,zhongji,2002,huixuanzhan,3001,sanduansha,500*/}// 自定义一个Skill类对象Skill skill = new Skill{id = 10,name = "Smith",damage = 1000};// 对象的序列化,将对象序列化为JSON字符串 string str = JsonConvert.SerializeObject(skill);Console.WriteLine(str);  // {"id":10,"name":"Smith","damage":1000}// 定义一个字符串数组string[] names = { "张三", "李四", "王五" };string str1 = JsonConvert.SerializeObject(names);Console.WriteLine(str1);  // ["张三","李四","王五"]Hero hero = JsonConvert.DeserializeObject<Hero>(File.ReadAllText("Hero.json"));Console.WriteLine(hero.Name);  // HuozhongConsole.WriteLine(hero.MaxHP);  // 15000Console.WriteLine(hero.Type);  // Marksmanforeach (Skill s in hero.SkillList){Console.WriteLine(s.id + ", " + s.name + ", " + s.damage);/*1, zhongji, 2002, huixuanzhan, 3001, sanduansha, 500*/}}}

 

// 运行结果

相关文章:

C#__对Json文件的解析和序列化

Json: 存储和交换文本信息的语法。&#xff08;类似XML&#xff0c;语法独立&#xff09; 一种轻量级的数据交换格式。&#xff08;更小&#xff0c;更快&#xff0c;更易解析&#xff09; 语法规则: 数据在键值对里面&#xff0c;数据由逗号分隔开。 …...

如果一定要在C++和JAVA中选择,是C++还是java?

如果一定要在C和JAVA中选择&#xff0c;是C还是java&#xff1f; 计算机专业的同学对这个问题有疑惑的&#xff0c;- 定要看一下这个回答! 上来直接给出最中肯的建议: 如果你是刚刚步入大学的大一时间非常充裕的同学&#xff0c;猪学长强烈建议先学C/C.因为C 非常 最近很多…...

如何运行深度学习项目代码

运行项目代码是第一步哦&#xff01; 配环境 使用anaconda环境&#xff1b; conda 环境 按照项目提示的README.md&#xff0c;安装指定版本的python&#xff1b; 当然新版python会兼容旧版&#xff0c;也就是你的环境下python版本比它高也不要紧&#xff1b; 但是更新的pyt…...

C语言 每日一题 day9

求最大值及其下标 本题要求编写程序&#xff0c;找出给定的n个数中的最大值及其对应的最小下标&#xff08;下标从0开始&#xff09;。 输入格式 : 输入在第一行中给出一个正整数n&#xff08;1 < n≤10&#xff09;。第二行输入n个整数&#xff0c;用空格分开。 输出格式 …...

通讯网关软件032——利用CommGate X2OPC实现OPC客户端访问Modbus TCP设备

本文介绍利用CommGate X2OPC实现OPC客户端连接Modbus TCP设备。CommGate X2OPC是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;SCADA系统上位机、PLC、设备具备Modbus TCP通讯接口&#xff…...

[计算机提升] 查看系统软件

3.1 查看系统软件 此处系统软件为系统安装后自带的一些软件、工具等。包括&#xff1a;管理工具、系统工具、轻松使用工具、附件等。 方法一&#xff1a;通过菜单打开系统软件 1、点击左下角windows菜单键&#xff0c;在弹出的菜单中&#xff0c;任一点击一个字母(示例中为C)&…...

【mysql】单表数据量过大解决方案

文章目录 背景问题方案数据库冷热数据分离方案 背景 包装码表单表数据量很大&#xff0c;造成查询瓶颈&#xff1b;目前单表数据量达到3000w&#xff0c;单表字段数16 问题 索引膨胀&#xff0c;查询耗时长&#xff0c;影响正常CRUD … 方案 ● 分区 按日期…范围&#x…...

Kafka - 3.x 消费者 生产经验不完全指北

文章目录 生产经验之Consumer事务生产经验—数据积压&#xff08;消费者如何提高吞吐量&#xff09; 生产经验之Consumer事务 Kafka引入了消费者事务&#xff08;Consumer Transactions&#xff09;来确保在消息处理期间维护端到端的数据一致性。这使得消费者能够以事务的方式…...

UDP网络编程的接受与发送信息

/发送端B>可以接受数据 public class UDPSenderB {public static void main(String[] args) throws IOException {//创建一个DatagramSocket 对象&#xff0c;准备发送和接受数据DatagramSocket socket new DatagramSocket(9998);//将需要发送的数据&#xff0c;封装到Data…...

RK3588开发笔记-USB3.0接口调试

目录 前言 一、资源介绍 二、硬件连接 三、设备树配置...

AI绘画|midjourney入门保姆教程,30秒出专业大片,国内直接使用

同学们&#xff0c;之前大家想用midjourney还需要魔法上网和很复杂的注册配置&#xff0c;现在微信里就能使用midjourney了&#xff0c; 还支持中文&#xff0c;大家赶紧来试试吧。 AI写稿专家 www.promptspower.comhttp://www.promptspower.com 我们还给大家提供了各个行业的…...

阿里发布AI编码助手:通义灵码,兼容 VS Code、IDEA等主流编程工具

今天是阿里云栖大会的第一天&#xff0c;相信场外的瓜&#xff0c;大家都吃过了。这里就不说了&#xff0c;有兴趣可以看看这里&#xff1a;云栖大会变成相亲现场&#xff0c;最新招婿鄙视链来了... 。 这里主要说说阿里还发布了一款AI编码助手&#xff0c;对于我们开发者来说…...

【Linux】-进程控制(深度理解写时拷贝、exit函数、return的含义以及makefile编译多个程序)-进程创建、进程终止、进程等待、进程程序替换

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …...

【mfc/VS2022】计图实验:绘图工具设计知识笔记3

实现类对串行化的支持 如果要用CArchive类保存对象的话&#xff0c;那么这个对象的类必须支持串行化。一个可串行化的类通常有一个Serialize成员函数。要想使一个类可串行化&#xff0c;要经历以下5个步骤&#xff1a; 1、从CObject派生类 2、重写Serialize成员函数 3、使用DE…...

Leetcode—1488.避免洪水泛滥【中等】

2023每日刷题&#xff08;十四&#xff09; Leetcode—1488.避免洪水泛滥 算法思想 将晴天的日期全部记录在set<int> sun中使用unordered_map<int, int> lakeRainy来记录每个湖泊上一次下雨的日期遇到晴天时先不用管抽哪个湖当下雨时&#xff0c;湖泊已经装满水时…...

CSS与基本选择器

<div class"c1" id"d1"></div> CSS基本知识 什么是css&#xff1a;CSS&#xff08;Cascading Style Sheet&#xff0c;层叠样式表)定义如何显示HTML元素。 当浏览器读到一个样式表&#xff0c;他就会按照这个样式l来进行渲染。其实就是让HT…...

回归算法|长短期记忆网络LSTM及其优化实现

本期文章将介绍LSTM的原理及其优化实现 序列数据有一个特点&#xff0c;即“没有曾经的过去则不存在当前的现状”&#xff0c;这类数据以时间为纽带&#xff0c;将无数个历史事件串联&#xff0c;构成了当前状态&#xff0c;这种时间构筑起来的事件前后依赖关系称其为时间依赖&…...

小米电视播放win10视频 win10共享问题

解决的方法就是安装SMB1.0协议 重启就OK了...

uniApp开发注意要点提炼-xyphf

我们在使用uniApp开发的时候&#xff0c;很多朋友由于对多端兼容性的不了解&#xff0c;结果在多端编译的时候经常出这样或者那样的问题&#xff0c;而不断的说uniApp这坑那坑的&#xff0c;下面我基于自身经验和官网说明提炼一些常见的注意要点。 因为很多公司时常初衷是开发一…...

DHorse改用fabric8的SDK与k8s集群交互

现状 在dhorse 1.4.0版本之前&#xff0c;一直使用k8s官方提供的sdk与k8s集群交互&#xff0c;官方sdk的Maven坐标如下&#xff1a; <dependency><groupId>io.kubernetes</groupId><artifactId>client-java</artifactId><version>18.0.0…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析&#xff1a;AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github&#xff1a;https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...