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

news2024/9/22 13:26:42

 

    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,200
                2,huixuanzhan,300
                1,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);  // Huozhong
            Console.WriteLine(hero.MaxHP);  // 15000
            Console.WriteLine(hero.Type);  // Marksman
            foreach (Skill s in hero.SkillList)
            {
                Console.WriteLine(s.id + ", " + s.name + ", " + s.damage);
                /*
                1, zhongji, 200
                2, huixuanzhan, 300
                1, sanduansha, 500*/
            }

        }
    }

 

// 运行结果

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

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

相关文章

《研发效能(DevOps)工程师》课程简介(一)丨IDCF

为贯彻落实《关于深化人才发展体制机制改革的意见》&#xff0c;推动实施人才强国战略&#xff0c;促进专业技术人员提升职业素养、补充新知识新技能&#xff0c;实现人力资源深度开发&#xff0c;推动经济社会全面发展&#xff0c;根据《中华人民共和国劳动法》有关规定&#…

SpringBoot整合自签名SSL证书,转变HTTPS安全访问(单向认证服务端)

前言 HTTP 具有相当优秀和方便的一面,然而 HTTP 并非只有好的一面&#xff0c;事物皆具两面性&#xff0c;它也是有不足之处的。例如&#xff1a; 通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能会被窃听。不验证通信方的身份&#xff0c;因此有可能会遭遇…

【精】UML及软件管理工具汇总

目录 1 老七工具&#xff08;规划质量&#xff09; 1.1 因果图&#xff08;鱼骨图、石川图&#xff09; 1.2 控制图 1.3 流程图:也称过程图 1.4 核查表:又称计数表 1.5 直方图 1.6 帕累托图 1.7 散点图&#xf…

完美的代价

题目&#xff1a; * 题目&#xff1a; * 回文串&#xff0c;是一种特殊的字符串&#xff0c;它从左往右和从右往左读是一样的。 * 现在给你一个串&#xff0c;它不一定是回文的&#xff0c;请你计算最少的交换次数使得该串变为完美的回文回文串。 * 例如&#xff1a;mamad * 第…

新风机如何联动?

数据中心的运行会产生大量的热量&#xff0c;因为其中包含了大量的服务器、存储设备以及网络设备等&#xff0c;它们需要消耗大量的电力来进行计算和数据处理。为了保证这些设备运行的稳定性和性能&#xff0c;数据中心必须维持适宜的温度和湿度。 新风系统可以在数据中心中起到…

centos7简易安装mysql8

下载包&#xff1a;wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 更新rpm缓存&#xff1a;sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm 安装mysql-server&#xff1a;sudo yum install mysql-community-server --nogpgcheck 强…

使用内网穿透工具进行支付宝沙箱环境支付的SDK接口远程测试

Java支付宝沙箱环境支付&#xff0c;SDK接口远程调试【内网穿透】 1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,maven项目可以选择maven版本,普通java项目可以在GitHub下载,这里以maven为例 SDK下载地址&#xff1a;https://doc.open.alipay.com…

el-tabel表格加个多选框

<template><div><el-checkbox v-model"checked" :disabled"checkedDis" change"onAllSelectChange">多选框</el-checkbox>点击多选框&#xff0c;禁用列表复选框<el-table ref"multipleTable" :data"…

Google Play PolicyBytes 政策更新中文视频 | 2023 年 10 月

Google Play 持续帮助开发者开启成功出海之旅&#xff0c;为用户提供安全优质的应用。也感谢大家与我们携手合作&#xff0c;继续努力将 Google Play 打造为一个安全可信赖的平台。欢迎您观看 Google Play PolicyBytes 中文视频了解 2023 年 10 月政策更新内容&#xff0c;更及…

【原创】java+swing+mysql校园社团管理系统设计与实现

引言&#xff1a; 随着社团组织的日益发展和壮大&#xff0c;社团管理面临着越来越多的挑战。为了提高社团管理的效率和规范性&#xff0c;本文基于javaswing实现了一个社团管理系统。该系统基于C/S架构&#xff0c;采用Java语言开发&#xff0c;数据库采用mysql。 功能分析&…

2023CPSE安博会圆满落幕,英码科技展位吸引众多国内外客户关注!

10月25日-28日&#xff0c;主题为“连接世界&#xff0c;感知未来”的第十九届中国国际社会公共安全博览会&#xff08;以下简称CPSE安博会&#xff09;在深圳福田会展中心隆重举行。英码科技与1100多家企业一起&#xff0c;为来自世界各国的观展嘉宾带来创新性的国产AI智能硬件…

Python 学习2 判断、循环、函数

文章目录 判断语句布尔类型和比较运算符判断语句&#xff1a;if语句 循环语句while循环for循环 函数小结 2023.10.29 周六 老规矩贴一下链接 B站 - 黑马程序员2022python教程 判断语句 布尔类型和比较运算符 Python中布尔类型的基础定义和比较运算符的使用&#xff0c;包括…

网络爬虫-Requests库入门

一、Requests库的安装 以管理员身份运行命令控制台&#xff0c;输入 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests 测试&#xff1a;打开IDLE 此时百度的html页面被抓取成功 二、requests库的7个主要方法 三、Requests库的get()方法&#xff1a;获得…

【C++】类和对象(中)之构造函数与析构函数

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.构造函数 1.1概念 1.2特性 2.析构…

基于计算机视觉的 Transformer 研究进展

论文地址&#xff1a; https://kns.cnki.net/kcms/detail/11.2127.tp.20211129.1135.004.html 18页&#xff0c;74篇参考文献 目录 摘 要 1 Transformer 基本原理 1.1 编码器-解码器 1.2 自注意力 1.3 多头注意力 2 在计算机视觉领域的应用 2.1 图像分类 2.1.1 iGPT …

Java使用正则表达式匹配省市县

目录 1.导入依赖 2.编写工具类 3.验证​ 1.导入依赖 <!--为了使用StringUtils--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.9</version></dependency>2…

【蓝桥杯选拔赛真题44】python小蓝晨跑 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析

目录 python小蓝晨跑 一、题目要求 1、编程实现 2、输入输出 二、算法分析

LeetCode | 27. 移除元素

LeetCode | 27. 移除元素 OJ链接 这道题有一个方法是要删除的数据直接后一个数据挪动到前一个数据&#xff0c;这个方法好不好&#xff1f;最坏的情况下时间复杂度是O(N^2) 还有一个方法 定义一个src定义一个dst&#xff0c;原地直接进行赋值&#xff0c;不进行挪动&#xf…

什么是车规级芯片?一起探讨车规级芯片NCV8705MTADJTCG LDO线性稳压器 工作原理、特性参数

关于车规级芯片&#xff08;Automotive Grade Chip&#xff09;&#xff0c;车规级芯片是专门用于汽车行业的芯片&#xff0c;具有高可靠性、高稳定性和低功耗等特点&#xff0c;以满足汽车电子系统的严格要求。这些芯片通常用于车载电子控制单元&#xff08;ECU&#xff09;和…

轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1+MySQL

轻量级狂雨小说cms系统源码 v1.5.2 基于ThinkPHP5.1MySQL的技术开发 狂雨小说cms提供一个轻量级小说网站解决方案&#xff0c;基于ThinkPHP5.1MySQL的技术开发。 KYXSCMS,灵活&#xff0c;方便&#xff0c;人性化设计简单易用是最大的特色&#xff0c;是快速架设小说类网站首选…