c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...
今日写番茄闹钟程序,打算添加日程安排内容,使用到json格式文件的序列化和反序列化:
什么是Json ?
Json【
它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,
并且它很容易被计算机转化和生成,它是完全独立于语言的。
Json支持下面两种数据结构:
键值对的集合–各种不同的编程语言,都支持这种数据结构;
有序的列表类型值的集合–这其中包含数组,集合,矢量,或者序列,等等。
Json有下面几种表现形式:
1.对象
一个没有顺序的“键/值”,一个对象以花括号“{”开始,并以花括号”}”结束,
在每一个“键”的后面,有一个冒号,并且使用逗号来分隔多个键值对。
例如:var user = {“name”:”Manas”,”gender”:”Male”,”birthday”:”1987-8-8″}
2.数组
设置值的顺序,一个数组以中括号”[“开始,并以中括号”]”结束,
并且所有的值使用逗号分隔,
例如:
var userlist = [
{“user”:{“name”:”Manas”,”gender”:”Male”,”birthday”:”1987-8-8″}},
{“user”:{“name”:”Mohapatra”,”Male”:”Female”,”birthday”:”1987-7-7″}}
]
3.字符串
任意数量的Unicode字符,使用引号做标记,并使用反斜杠来分隔。
(注意: 引号 逗号 冒号 均为英文状态下半角符号, 且只能是双引号 )
例如: var userlist = “{\”ID\”:1,\”Name\”:\”Manas\”,\”Address\”:\”India\”}”
在
Newtonsoft.Json,是.Net中开源的Json序列化和反序列化工具,官方地址:http://www.newtonsoft.com/json。
具体使用:
1. 右键项目=>Nuget包管理=>添加 Newtonsoft.Json
2. 引入命名空间
1 using Newtonsoft.Json;
3. 定义类
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
}
4. 序列化和反序列化实体对象
//序列化对象
Student one = new Student()
{ ID = 1, Name = "武松", Age = 250, Sex = "男" };
//序列化
string jsonData = JsonConvert.SerializeObject(one);
Console.WriteLine(jsonData); //显示结果
Console.ReadLine();
//反序列化对象
string str = "{\"ID\":2,\"Name\":\"鲁智深\",\"Age\":230,\"Sex\":\"男\"}";
//反序列化
Student two = JsonConvert.DeserializeObject(str);
Console.WriteLine(
string.Format("学生信息 ID:{0},姓名:{1},年龄:{2},性别:{3}",
two.ID,two.Name, two.Age,two.Sex));//显示结果
Console.ReadLine();
输出结果:
5. 序列化实体对象集合
//序列化对象集合
List oneList = new List() {
new Student{ ID = 1, Name = "武大", Age = 260, Sex = "男" },
new Student{ ID = 2, Name = "武二", Age = 250, Sex = "男" },
new Student{ ID = 3, Name = "武三", Age = 240, Sex = "女" }
}; //定义对象
string jsonData = JsonConvert.SerializeObject(oneList); //序列化
Console.WriteLine(jsonData); //显示结果
Console.ReadLine();
显示结果:
6. 反序列化实体对象集合(这里直接使用了 5 中的jsonData 字符串 , 原谅我偷点懒 )
List twoList = JsonConvert.DeserializeObject>(jsonData);
foreach(Student stu in twoList)
{
Console.WriteLine(
string.Format("学生信息 ID:{0},姓名:{1},年龄:{2},性别:{3}",
stu.ID, stu.Name, stu.Age, stu.Sex));//显示结果
}
Console.ReadLine();
显示结果:
c 语言 json序列化,C#中json字符串的序列化和反序列化 – 万能的聪哥 – 博客园...相关推荐
- java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园
1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...
- Django中的Model(字段) - 第五轻柔的code - 博客园
Django中的Model(字段) - 第五轻柔的code - 博客园 Django ORM 中的批量操作 - AlphaJx - 博客园
- Django中的Model(操作表) - 第五轻柔的code - 博客园
Django中的Model(操作表) - 第五轻柔的code - 博客园
- dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...
opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...
- android aar管理,【盗墓笔记】图解使用fat-aar方式在AndroidStudio中打包嵌套第三方aar的aar - 宋者为王 - 博客园...
将一些项目中的一些独立功能打包成aar,不仅能于项目解耦,还能够提供给其它项目使用相同的功能,可谓是为项目开发带来了很大的便利.最近第一次做sdk,碰到一些问题,花了不少时间才解决,所以这里做一下简单 ...
- ASP.NET Hashtable输出JSON格式数据 - 贵源网络 - 博客园
ASP.NET Hashtable输出JSON格式数据 - 贵源网络 - 博客园 ASP.NET Hashtable输出JSON格式数据
- webbrowser中localhost和发布的地址_发布一款android版博客园官方app
1.前言 博客园创立于2004年1月,是一个面向开发者的知识分享社区.自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益 ...
- 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...
版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...
- 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载)
来源:cleocn.com 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载) 简介:对于FreeTextBox(版本3.1.6)在ASP.Net ...
最新文章
- 面板服务器默认是什么系统,免费Linux服务器管理面板,你用的是哪个?
- Science子刊: 长期杀虫剂诱导选择下的宿主基因组与微生物组的共适应
- Android端WEEX + HTTPDNS 最佳实践
- php 下载.csv,php 文件流的形式下载csv
- springboot项目中一个实体类引用其它实体类的字段并显示到页面上
- 这可能是人工智能、机器学习和大数据领域覆盖最全的一份速查表
- C# 中xml数组的序列和反序列化方法
- Android开发和调试必备工具-SDK Tools
- docker安装并运行ElasticSearch-Head插件
- nn.Conv2d的解释
- java每轮排序结果_【算法队列面试题】面试问题:java选择题… - 看准网
- centos 6.7 安装php7
- python可以处理哪些文件_Python(文件处理)
- IT项目管理之系统设计
- unity脚本中print及Debug.Log
- java服务器间文件传输,java实现在多服务器之间的文件传输(Jsch)
- 影响力最大化 IC模型+贪心算法
- 生物信息学简史,A brief history of bioinformatics- Briefings in Bioinformatics综述解读
- WIN10计算机不支持3D游戏怎么办,win10电脑3d设置在哪里设置
- c语言程序漏洞分析,C语言源程序的缓冲区溢出漏洞分析及解决方案.pdf
热门文章
- 嵌入式BootLoader技术内幕(二)
- nginx自定义500、404错误页面
- Silverlight 异步单元测试
- 一个简单的封ip规则
- Spark的枚举类型实例!scala的枚举。
- windows 下 git 禁用 CRLF 转换 LF
- [JS][jQuery]清空元素html()、innerHTML= 与 empty()的区别 、remove()区别
- 利用类定义一个指针会调用默认构造函数吗_C++的拷贝构造函数
- Mybatis源码之数据源模块分析
- 交际过程的两个基本环节_男女相处,若不介意这些“小动作”,基本可以确定“关系暧昧”...