[NET Core] 3.1版本 Json 正反序列化与过去版本的差异
前言
写这篇文章为NET Core 3.1发布约半年后(2020-06)的统整,今日发布于此故作为纪录与供其他同好参考
今年将发布的.NET 6若有在这块议题异动,再新增新的区块做差异比较
1.物件属性的Attribute改变
在NET Core 2.1 的物件Json转换是透过 Newtonsoft.Json 进行物件的正反序列化动作
using Newtonsoft.Json; public class Student { [JsonProperty("studentName")] public string Name { get; set; } [JsonProperty("studentAge")] public int Age { get; set; } }
但是在 NET Core 3.1 正式发布版本 已经非支援 Newtonsoft.Json 而是微软自己开发内建的 Text.Json.Serialization
using System.Text.Json.Serialization; public class Student { [JsonPropertyName("studentName")] public string Name { get; set; } [JsonPropertyName("studentAge")] public int Age { get; set; } }
其中在model 物件或属性的Json格式部分已经从 JsonProperty() 调整成 JsonPropertyName()
2.序列化与反序列化的改变
在 NET Core 2.1 是物件与字串的正反序列化方式():
using Newtonsoft.Json;string resultStr = JsonConvert.SerializeObject(student);Student student = JsonConvert.DeserializeObject<Student>(resultStr);
在 NET Core 3.1 的改变是:
using System.Text.Json.Serialization;string resultStr = JsonSerializer.Serialize(student);Student student = JsonSerializer.Deserialize<Student>(resultStr);