JSON 序列化 反序列化

发布于:2025-03-17 ⋅ 阅读:(23) ⋅ 点赞:(0)

序列化,反序列化

其实就是转换数据格式的过程。

序列化 (Serialization)

是将【对象的状态信息】转换为【可以存储或传输的形式】的过程。即:把C#中的类 转换成 JSON格式的字符串,就是序列化。其中【对象的状态信息】就是类的各种属性。

反序列化:

JSON格式的字符串 转换成 C#中的类,就是反序列化。
JSON格式的字符串操作时,不方便。如:"{“name”:“dsh”,“age”=20,“sex”=false}"就是JSON格式的字符串,取某个键的值时,需要字符串截取,相对麻烦,通过反序列化,把这种JSON格式的字符串转换成C#中的类对象,就可以方便获取某个属性值。

JSON是一种轻量级的数据交互格式。和xml这种数据格式相比,在传输过程中比较轻量的,传输的快。

3。JSON?序列化?反序列化?

JSON:JavaScript Object Notation(JavaScript 对象表示法),是一种简单且流行的数据交换格式。
JSON格式的数据在互联网上传输时,比 XML 更小、更快,更易解析。
JSON格式的数据在Web项目中使用的很多,特别表现在请求web接口数据时,一般web接口返回的数据都是JSON格式,在WinForm项目中相对少。

数据交换格式:纯文本、html、xml(WebService)、json

B/S Browser/Server C/S Client/Server

JSON语法:

1。属性名称必须使用双引号包裹
2。属性值,如果是字符串用双引号包裹,如果是数字不需要包裹,如果是布尔不需要包裹,如果是日期
3。最后一项({},[])的逗号分割符不能要。

JSON 语法是 JavaScript 对象表示语法的子集。

数据在名称/值对中
数据由逗号 , 分隔
使用斜杆 \ 来转义字符
大括号 {} 保存对象
中括号 [] 保存数组,数组可以包含多个对象

JSON格式观察一下,其实是一个大对象{},有属性,属性值可以是[],数组中有可能嵌套对象。
JSON就是一个数组和对象之间互换嵌套的一种数据格式。互换嵌套形成一个无限层级的大数据。

JSON解析工具,如:https://www.x-json.cn/
浏览器JSON-handle插件
https://chrome.zzzmh.cn/search/jsonhandle

JSON序列化及反序列化重要类库:newtonsoft.json

 // 序列化特性可以省略,默认C#类对象,就可以支持序列化
 [Serializable]
 public class Person
 {
     public int Id { get; set; }
     public string Name { get; set; }
     public bool Sex { get; set; }
     public DateTime Birthday { get; set; }
     public string[] Fav { get; set; }
     public Person Friend { get; set; }

     public override string ToString()
     {
         return "{ \"Id:\"" + this.Id + "\"Name:\"" + this.Name  + "}";
     }
 }
 string jsonString = string.Empty;
// C#中的对象(万物皆对象)
 Person p = new Person()
 {
     Id = 1,
     Name = "张三",
     Sex = true,
     Birthday = DateTime.Now,
     Fav= new string[] { "吃", "喝" },
     Friend = new Person() { Id = 2, Name = "李四", Sex = false, Birthday = DateTime.Now }
 };

// 默认类的ToString()方法,不能用来序列化成JSON格式的字符串,如果想用它来序列化成JSON格式的字符串
// 需要开发者重写ToString()逻辑。重写逻辑时,拼接字符串很麻烦。
//MessageBox.Show(p.ToString());

// 序列化:把C#中的类对象 转换成 JSON格式的字符串。
// 好处:方便存储,方便传输。

  jsonString = JsonConvert.SerializeObject(p);
  MessageBox.Show(jsonString);

结果
在这里插入图片描述

// 反序列化:JSON格式的字符串 转换成 C#中的类对象。
// 为啥要反序列化?JSON格式的字符串操作时,不方便。把它反序列化成C#对象,方便使用。
// un取反意思 de取反的意思

Person p2 = JsonConvert.DeserializeObject<Person>(jsonString);
MessageBox.Show(p2.Name+","+ p2.Friend.Name);

结果
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到