寫這篇文章為NET Core 3.1發布約半年後(2020-06)的統整,今日發布於此故作為紀錄與供其他同好參考
今年將發布的.NET 6若有在這塊議題異動,再新增新的區塊做差異比較
在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()
在 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);
netcore
modelvalidate
WebAPI
Json