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对数据对象进行序 ...
随机推荐
- 全局定义UINavigationContoller--By秀清
// // NavController.m // // Created by Joe Zhang on 15/5/23. // Copyright (c) 2015年 张秀清. All rights ...
- kali中安装arpspoof 报错
情境今天在使用arpspoof这个命令的时候,提示没有命令找不到,此时就想着安装一下没想到,碰上kali源不支持的问题 解决所以,此时需要做的就是安装阿里云或者其他镜像 步骤1. vim /etc ...
- Pandas之groupby分组
释义 groupby用来分组,调用groupby 之后返回pandas.core.groupby.generic.DataFrameGroupBy,其实就是由一个个格式为(key, 分组后的dataf ...
- mysql中generated always as的使用
-- generated always as的使用 CREATE TABLE t1( c1 INT, c2 DOUBLE(20,19) , c3 INT GENERATED ALWAYS AS(c1* ...
- tip6:idea 开发工具使用
使用idea开发工具过程中,各种个性化设置或快捷方式使用汇总 1.设置默认maven为本地 2.编写代码时提供完整的参数提示信息 3.编辑器列模式 使用alt+鼠标左键,鼠标下移即可.使用版本idea ...
- MyBatis分页插件PageHelper使用方法
1.导入相关依赖坐标 <!-- MyBatis分页插件 --> <dependency> <groupId>com.github.pagehelper</gr ...
- kali主机探测命令与工具集
实验目的 熟悉ping.arping.fping.hping3.nbtscan.nping.p0f.xprobe2工具对目标主机的探测方法. 实验原理 目标识别工具发送特殊构造的数据包,根据返回的应答 ...
- 网络测试技术——802.1X原理
一.以太网优点缺点 1.以太网优点 (1)即插即用,简单快捷 (2)任何一台电脑只要接入网络便有访问网络资源的权限 2.以太网缺点 (1)缺乏安全认证机制(二层) (2)电脑接到交换机上就能访问网络 ...
- 【剑指 Offer II 001. 整数除法】同leedcode 29.两数相除
剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. ...
- petite-vue源码剖析-为什么要读源码?
什么是petite-vue? 根据官方解释,petite-vue是专门为非前后端分离的历史项目提供和Vue相近的响应式开发模式. 与完整的Vue相比最大的特点是,面对数据的变化petite-vue采取 ...