赞
踩
在C#中,JSON(JavaScript Object Notation)序列化与反序列化是将对象转换成JSON格式的字符串表示,以及从JSON字符串还原为对象的过程。
首先要添加引用NuGet包,Newtonsoft.Json,通过此工具可对Json对象进行序列化与反序列化。当然还可通过其它方式,这里的话只介绍这一种方法。
序列化是指将C#对象转换为JSON字符串。
- // 引用 Newtonsoft.Json 包
- using Newtonsoft.Json;
-
- // 假设我们有一个类
- public class Skill
- {
- public int ID { get; set; }
- public string Name { get; set; }
- public int Damage { get; set; }
- }
-
- // 创建一个实例对象
- Skill mySkill = new Skill
- {
- ID = 1,
- Name = "Fireball",
- Damage = 50
- };
-
- // 序列化为JSON字符串
- string json = JsonConvert.SerializeObject(mySkill);
-
- // 输出:{"ID":1,"Name":"Fireball","Damage":50}

反序列化则是将JSON字符串转换回C#对象。
- // JSON 字符串
- string jsonString = "{\"ID\":1,\"Name\":\"Fireball\",\"Damage\":50}";
-
- // 反序列化为C#对象
- Skill deserializedSkill = JsonConvert.DeserializeObject<Skill>(jsonString);
-
- // 现在deserializedSkill变量包含了与原始mySkill相同的属性值
1.反序列化Json字符串
string str = "{\"success\":true,\"msg\":\"获取成功\",\"data\":[{\"id\":0,\"Name\":\"is C#\",\"Number\":\"A-001\",\"Date\":\"2019-08-02\"},{\"id\":1,\"Name\":\"is Golang\",\"Number\":\"A-002\",\"Date\":\"2019-08-03\"},{\"id\":2,\"Name\":\"is Java\",\"Number\":\"A-003\",\"Date\":\"2019-08-04\"}]}";
我们可以对这个Json字符串进行刨析,从而建立类。
如果想更清晰的看清这个Json对象的结构,可将这个Json字符串复制出来,在搜索引擎中输入Json
随便选择任何一个,将上面那个Json字符串输入进去,它的结构便一目了然
话不多说,建立两个类 Message、Datas
- public class Message
- {
- public bool success { get; set; }
- public string msg { get; set; }
- public List<Datas> data { get; set; }
- }
-
- public class Datas
- {
- public int id { get; set; }
- public string Name { get; set; }
- public string Number { get; set; }
- public string Date { get; set; }
- }
关键代码:
Message message = JsonConvert.DeserializeObject<Message>(str);
我们可以查看它的详细信息
右键点击message,选择快速监视
此时反序列化已经成功,
2.序列化对象
我们可就Datas类作为序列化的对象
文本可视化工具查看Serializedata对象:
3.也可对集合进行序列化与反序列化
- var DataList = new List<Datas>();
- DataList.Add(new Datas
- {
- id = 1,
- Name = "aggregate",
- Number = "A1",
- Date = "2019-08-01"
- });
- //序列化
- string SerializeDataList = JsonConvert.SerializeObject(DataList);
文本可视化工具查看SerializeDataList对象:
反序列化实体对象集合:
- //反序列化实体对象集合
- string Data = "[{\"id\":0,\"Name\":\"is C#\",\"Number\":\"A-001\",\"Date\":\"2019-08-02\"},{\"id\":1,\"Name\":\"is Golang\",\"Number\":\"A-002\",\"Date\":\"2019-08-03\"},{\"id\":2,\"Name\":\"is Java\",\"Number\":\"A-003\",\"Date\":\"2019-08-04\"}]";
- //关键代码
- var DeserializeData = JsonConvert.DeserializeObject<List<Datas>>(Data);
可查看DeserializeData对象其详细信息:
上面只是列举了一些简单例子,Newtonsoft.Json 库提供了更多的选项和功能,可以根据需要进行配置和定制序列化/反序列化行为,具体的以实际开发为主。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。