当前位置:   article > 正文

C# JSON之序列化与反序列化_json序列化对象 c#

json序列化对象 c#

在C#中,JSON(JavaScript Object Notation)序列化与反序列化是将对象转换成JSON格式的字符串表示,以及从JSON字符串还原为对象的过程。

首先要添加引用NuGet包,Newtonsoft.Json,通过此工具可对Json对象进行序列化与反序列化。当然还可通过其它方式,这里的话只介绍这一种方法。

JSON 序列化

序列化是指将C#对象转换为JSON字符串。

  1. // 引用 Newtonsoft.Json 包
  2. using Newtonsoft.Json;
  3. // 假设我们有一个类
  4. public class Skill
  5. {
  6. public int ID { get; set; }
  7. public string Name { get; set; }
  8. public int Damage { get; set; }
  9. }
  10. // 创建一个实例对象
  11. Skill mySkill = new Skill
  12. {
  13. ID = 1,
  14. Name = "Fireball",
  15. Damage = 50
  16. };
  17. // 序列化为JSON字符串
  18. string json = JsonConvert.SerializeObject(mySkill);
  19. // 输出:{"ID":1,"Name":"Fireball","Damage":50}

JSON 反序列化

反序列化则是将JSON字符串转换回C#对象。

  1. // JSON 字符串
  2. string jsonString = "{\"ID\":1,\"Name\":\"Fireball\",\"Damage\":50}";
  3. // 反序列化为C#对象
  4. Skill deserializedSkill = JsonConvert.DeserializeObject<Skill>(jsonString);
  5. // 现在deserializedSkill变量包含了与原始mySkill相同的属性值

注意事项

  • 类中的属性名称必须与JSON键对应,否则在默认情况下无法正确映射。
  • 可以通过数据注解来自定义序列化和反序列化的行为,比如忽略某些属性、改变键名等。
  • Newtonsoft.Json支持.NET Framework和.NET Core等多种平台上的项目,并且提供了丰富的API来处理复杂的数据结构,包括数组、嵌套对象、匿名类型等。

示例如下

参照C# Json之序列化与反序列化

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

  1. public class Message
  2. {
  3. public bool success { get; set; }
  4. public string msg { get; set; }
  5. public List<Datas> data { get; set; }
  6. }
  7. public class Datas
  8. {
  9. public int id { get; set; }
  10. public string Name { get; set; }
  11. public string Number { get; set; }
  12. public string Date { get; set; }
  13. }

关键代码:

Message message = JsonConvert.DeserializeObject<Message>(str);

我们可以查看它的详细信息

右键点击message,选择快速监视

此时反序列化已经成功,

2.序列化对象

我们可就Datas类作为序列化的对象

文本可视化工具查看Serializedata对象:

 3.也可对集合进行序列化与反序列化

  1. var DataList = new List<Datas>();
  2. DataList.Add(new Datas
  3. {
  4. id = 1,
  5. Name = "aggregate",
  6. Number = "A1",
  7. Date = "2019-08-01"
  8. });
  9. //序列化
  10. string SerializeDataList = JsonConvert.SerializeObject(DataList);

文本可视化工具查看SerializeDataList对象:

 反序列化实体对象集合:

  1. //反序列化实体对象集合
  2. 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\"}]";
  3. //关键代码
  4. var DeserializeData = JsonConvert.DeserializeObject<List<Datas>>(Data);

可查看DeserializeData对象其详细信息:

上面只是列举了一些简单例子,Newtonsoft.Json 库提供了更多的选项和功能,可以根据需要进行配置和定制序列化/反序列化行为,具体的以实际开发为主。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/928517
推荐阅读
相关标签
  

闽ICP备14008679号