C#序列化和反序列化(json)
一,什么是Json?
json是存储和交换文本信息的方法,类似xml。但是json比xml更小,更快,j更易于解析。并且json采用完全独立于语言的文本格式(即不依赖于各种编程语言),这些特性使json成为理想的数据交换语言。
json使用JavaScript语法来描述数据对象,但是json独立于语言和平台。json解析器和json库支持许多不同的编程语言。
json语法规则:
- 数据在键值对中
- 数据由逗号分割
- 花括号保存对象
- 方括号保存数组
json数据结构:
json简单来说就是javascript中的对象和数组,通过这两种数据结构就可以表示各种复杂的结构。
- 对象:对象在json中表示为大括号“{}”括起来的内容,数据结构为{key:value,key:value,...}的键值对的结构。在面向对象中,key为对象的属性,vlaue为对应属性的值。取值方法为对象.key(c#对象[key])获取属性值,这个属性值可以为数字,字符串,数组,对象几种。
- 数组:数组在json中表示为中括号“[]”括起来的内容,数据结构为["java","javascript","vb",...],取值方式和所以语言一样,使用索引获取,字段的值可以是数字,字符串,数组,对象几种。
安装JsonNet程序包:
右键单击项目->选择管理NuGet程序包->输入json->选择Newtonsoft.Json进行下载。

下载完成后就会出现:

二, json的序列化和反序列化
我们可以添加一个文本文件新建项目,在这里就可以安装json的语法进行书写。

并创建一个skill类用于接收该值。(类中的属性要与josn键值对应)
class skill
{
public int ID { get; set; }
public string Name { get; set; }
public int damage { get; set; } }
1️⃣反序列化(即将json语法转化成C#中的对象)
在主程序中进行调用:(引用添加的txt路径需要将skill.txt的复制到输出目录属性设置为如果较新则复制)
static void Main(string[] args)
{
//反序列化DeserializeObject
skill[] skillArray= JsonConvert.DeserializeObject<skill[]>(File.ReadAllText("skill.txt"));
foreach (skill s in skillArray)
{
Console.WriteLine("id:" + s.ID + "名字:" + s.Name + "伤害值:" + s.damage);
}
}

这样就完成了反序列化操作:

2️⃣序列化操作(将C#中类的数据转换成json格式)
- 序列化对象(josn格式:使用大括号)
static void Main(string[] args)
{
//SerializeObject
skill sk = new skill();
sk.ID = 10;
sk.Name = "金刚罩";
sk.damage = 1000;
string str = JsonConvert.SerializeObject(sk);
Console.WriteLine(str);
}

获得的字符串str可以用来传输或存储。
- 序列化数组(json格式:使用中括号)
static void Main(string[] args)
{
string[] ss = { "小李", "小王", "小红" };
string str = JsonConvert.SerializeObject(ss);
Console.WriteLine(str);
}

C#序列化和反序列化(json)的更多相关文章
- C#序列化及反序列化Json对象通用类JsonHelper
当今的程序界Json大行其道.因为Json对象具有简短高效等优势,广受广大C#码农喜爱.这里发一个序列化及反序列化Json对象通用类库,希望对大家有用. public class JsonHelper ...
- Jackson序列化和反序列化Json数据完整示例
Jackson序列化和反序列化Json数据 Web技术发展的今天,Json和XML已经成为了web数据的事实标准,然而这种格式化的数据手工解析又非常麻烦,软件工程界永远不缺少工具,每当有需求的时候就会 ...
- (推荐JsonConvert )序列化和反序列化Json
在Json文本和.Net对象之间转换最快的方法是试用JsonSerializer. JsonSerializer通过将.Net对象属性名称映射到Json属性名称,并为其复制值,将.Net对象转换为其J ...
- json数组的序列化和反序列化json数组的序列化和反序列化
如题,我就不多说了,自己看代码的,很好理解 using System; using System.Collections.Generic; using System.Web; using System ...
- Java对象的序列化与反序列化-Json篇
说到Java对象的序列化与反序列化,我们首先想到的应该是Java的Serializable接口,这玩意在两个系统之间的DTO对象里面可能会用到,用于系统之间的数据传输.或者在RPC(远程方法调用)时可 ...
- day5-python中的序列化与反序列化-json&pickle
一.概述 玩过稍微大型一点的游戏的朋友都知道,很多游戏的存档功能使得我们可以方便地迅速进入上一次退出的状态(包括装备.等级.经验值等在内的一切运行时数据),那么在程序开发中也存在这样的需求:比较简单的 ...
- C# 序列化与反序列化json
与合作伙伴讨论问题,说到的c++与c#数据的转换调用,正好就说到了序列化与反序列化,同样也可用于不同语言间的调用,做了基础示例,作以下整理: using System.Data; using Syst ...
- DataTable序列化及反序列化Json
添加Json解析引用 using Newtonsoft.Json; 实现方式一:普通转换 private void button1_Click(object sender, EventArgs e) ...
- Silverlight 使用DataContractJsonSerializer序列化与反序列化 Json
环境说明:Silverlight 5.1,.Net Framework 4.0 1.添加引用System.ServiceModel.Web.dll. 因为 System.Runtime.Seria ...
- 在MVC中使用Json.Net序列化和反序列化Json对象
在.Net的MVC开发中,经常会使用到Json对象,于是,系统提供了JsonResult这个对象,其本质是调用.Net系统自带的Json序列化类JavaScriptSerializer对数据对象进行序 ...
随机推荐
- 自动循环滚动ScrollView
// // SBCycleScrollView.h // SBCycleScrollView // // Created by luo.h on 15/7/12. // Copyright (c) 2 ...
- 通过loganalyzer展示数据库中的日志
一.安装mysql # yum -y install mariadb-server # systemctl enable --now mariadb && systemctl stat ...
- Windows office2019免费激活,附代码
office2019地址:链接:https://pan.baidu.com/s/1zPt5U7b0L-bGHl5AOtYs2w提取码:m5ei 新建一个txt,然后把这段代码放进去,然后保存关闭改后缀 ...
- Large Sacle Distributed Deep Networks
本文是谷歌发表在NeurIPS 2012上的一篇论文,主要讨论了在几万个CPU节点上训练大规模深度网络的问题,并提出了一个名为DistBelief的软件框架.在该框架下实现了两种大规模分布式训练算法: ...
- 《深度探索C++对象模型》第二章 | 构造函数语意学
默认构造函数的构建操作 默认构造函数在需要的时候被编译器合成出来.这里"在需要的时候"指的是编译器需要的时候. 带有默认构造函数的成员对象 如果一个类没有任何构造函数,但是它包含一 ...
- Dubbo源码剖析六之SPI扩展点的实现之Adaptive功能实现原理
接Dubbo源码剖析六之SPI扩展点的实现之getExtensionLoader - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)继续分析Adaptive功能实现原理.Adaptive的主 ...
- Spring Boot 热插拔技术应用
对Spring/Spring Boot使用频繁的开发者,应该常见在应用Application上加@EnableXXX类似的注解.其实这个@EnableXXX的注解就是热插拔技术,加了这个就可以启动对应 ...
- .Net Core Aop之IActionFilter
一.简介 在.net core 中Filter分为以下六大类: 1.AuthorizeAttribute(权限验证) 2.IResourceFilter(资源缓存) 3.IActionFilter(执 ...
- Docker配置Pytorch深度学习环境
拉取镜像 $ docker pull pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel 查看本地已有镜像 $ docker images 创建容器 $ docke ...
- 音视频开发者的福音,快速集成AI配音能力
音视频内容创作者对剪辑应用中的AI配音需求与日俱增.它的优点很多,不光可以解决雇佣人力配音的成本以及创作者本身的口音.语言等限制,还可以大幅提升生产效率.比如,短视频的播放时间短的几十秒,长的vlog ...