今日写番茄闹钟程序,打算添加日程安排内容,使用到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字符串的序列化和反序列化 – 万能的聪哥 – 博客园...相关推荐

  1. java判断类型_Java中类型判断的几种方式 - 码农小胖哥 - 博客园

    1. 前言 在Java这种强类型语言中类型转换.类型判断是经常遇到的.今天就细数一下Java中类型判断的方法方式. 2. instanceof instanceof是Java的一个运算符,用来判断一个 ...

  2. Django中的Model(字段) - 第五轻柔的code - 博客园

    Django中的Model(字段) - 第五轻柔的code - 博客园 Django ORM 中的批量操作 - AlphaJx - 博客园

  3. Django中的Model(操作表) - 第五轻柔的code - 博客园

    Django中的Model(操作表) - 第五轻柔的code - 博客园

  4. dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...

    opencv中提供的基于haar特征级联进行人脸检测的方法效果非常不好,本文使用dlib中提供的人脸检测方法(使用HOG特征或卷积神经网方法),并使用提供的深度残差网络(ResNet)实现实时人脸识别 ...

  5. android aar管理,【盗墓笔记】图解使用fat-aar方式在AndroidStudio中打包嵌套第三方aar的aar - 宋者为王 - 博客园...

    将一些项目中的一些独立功能打包成aar,不仅能于项目解耦,还能够提供给其它项目使用相同的功能,可谓是为项目开发带来了很大的便利.最近第一次做sdk,碰到一些问题,花了不少时间才解决,所以这里做一下简单 ...

  6. ASP.NET Hashtable输出JSON格式数据 - 贵源网络 - 博客园

    ASP.NET Hashtable输出JSON格式数据 - 贵源网络 - 博客园 ASP.NET Hashtable输出JSON格式数据

  7. webbrowser中localhost和发布的地址_发布一款android版博客园官方app

    1.前言 博客园创立于2004年1月,是一个面向开发者的知识分享社区.自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益 ...

  8. 聊聊在博客园写博客的这两年《Unity 3D脚本编程:使用C#语言开发跨平台游戏》正式出版...

    版本状态: 2016.9 第一次印刷 (2016.11 输出到台湾) 2017.1 第二次印刷 2017.5 第三次印刷 2017.5 电子书上线:Unity 3D脚本编程--使用C#语言开发跨平台游 ...

  9. 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载)

    来源:cleocn.com 最新版FreeTextBox(版本3.1.6)在ASP.Net 2.0中使用简解(提供博客园本地下载) 简介:对于FreeTextBox(版本3.1.6)在ASP.Net ...

最新文章

  1. 面板服务器默认是什么系统,免费Linux服务器管理面板,你用的是哪个?
  2. Science子刊: 长期杀虫剂诱导选择下的宿主基因组与微生物组的共适应
  3. Android端WEEX + HTTPDNS 最佳实践
  4. php 下载.csv,php 文件流的形式下载csv
  5. springboot项目中一个实体类引用其它实体类的字段并显示到页面上
  6. 这可能是人工智能、机器学习和大数据领域覆盖最全的一份速查表
  7. C# 中xml数组的序列和反序列化方法
  8. Android开发和调试必备工具-SDK Tools
  9. docker安装并运行ElasticSearch-Head插件
  10. nn.Conv2d的解释
  11. java每轮排序结果_【算法队列面试题】面试问题:java选择题… - 看准网
  12. centos 6.7 安装php7
  13. python可以处理哪些文件_Python(文件处理)
  14. IT项目管理之系统设计
  15. unity脚本中print及Debug.Log
  16. java服务器间文件传输,java实现在多服务器之间的文件传输(Jsch)
  17. 影响力最大化 IC模型+贪心算法
  18. 生物信息学简史,A brief history of bioinformatics- Briefings in Bioinformatics综述解读
  19. WIN10计算机不支持3D游戏怎么办,win10电脑3d设置在哪里设置
  20. c语言程序漏洞分析,C语言源程序的缓冲区溢出漏洞分析及解决方案.pdf

热门文章

  1. 嵌入式BootLoader技术内幕(二)
  2. nginx自定义500、404错误页面
  3. Silverlight 异步单元测试
  4. 一个简单的封ip规则
  5. Spark的枚举类型实例!scala的枚举。
  6. windows 下 git 禁用 CRLF 转换 LF
  7. [JS][jQuery]清空元素html()、innerHTML= 与 empty()的区别 、remove()区别
  8. 利用类定义一个指针会调用默认构造函数吗_C++的拷贝构造函数
  9. Mybatis源码之数据源模块分析
  10. 交际过程的两个基本环节_男女相处,若不介意这些“小动作”,基本可以确定“关系暧昧”...