当前位置: 首页 > 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*/}}}

 

// 运行结果

http://www.lryc.cn/news/213459.html

相关文章:

  • 如果一定要在C++和JAVA中选择,是C++还是java?
  • 如何运行深度学习项目代码
  • C语言 每日一题 day9
  • 通讯网关软件032——利用CommGate X2OPC实现OPC客户端访问Modbus TCP设备
  • [计算机提升] 查看系统软件
  • 【mysql】单表数据量过大解决方案
  • Kafka - 3.x 消费者 生产经验不完全指北
  • UDP网络编程的接受与发送信息
  • RK3588开发笔记-USB3.0接口调试
  • AI绘画|midjourney入门保姆教程,30秒出专业大片,国内直接使用
  • 阿里发布AI编码助手:通义灵码,兼容 VS Code、IDEA等主流编程工具
  • 【Linux】-进程控制(深度理解写时拷贝、exit函数、return的含义以及makefile编译多个程序)-进程创建、进程终止、进程等待、进程程序替换
  • 【mfc/VS2022】计图实验:绘图工具设计知识笔记3
  • Leetcode—1488.避免洪水泛滥【中等】
  • CSS与基本选择器
  • 回归算法|长短期记忆网络LSTM及其优化实现
  • 小米电视播放win10视频 win10共享问题
  • uniApp开发注意要点提炼-xyphf
  • DHorse改用fabric8的SDK与k8s集群交互
  • 如何在阿里云国际站服务器上添加IP白名单?
  • GPT实战系列-ChatGLM2模型的微调训练参数解读
  • RabbitMQ入门到实战教程,消息队列实战,改造配置MQ
  • phar反序列化学习
  • 十年回望 -- JAVA
  • Linux 环境下 安装 Elasticsearch 7.13.2
  • 心理咨询预约小程序
  • 常用排序算法的理解
  • Python小程序 - 文件解析
  • .mxdown-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • audio 标签动态src 且src是http无法播放问题