在 .Net Core 上使用新的 JSON 處理方式
以往在 .NET 上處理 JSON,都是使用 Newtonsoft 的 library,甚至連微軟官方也使用這家的 library。不過現在新版本的 .NET Core 則新增了 System.Text.Json 這個命名空間,也就是說微軟自己已經內建了 JSON 的處理方式,來看一下基本的序列化及反序列化方式:
public class TestClass
{
public string Field1 { get; set; }
public int Field2 { get; set; }
public DateTime Field3 { get; set; }
public override string ToString()
{
return $"Field1: {Field1}, Field2: {Field2}, Field3: {Field3}";
}
}
...
TestClass t1 = new TestClass
{
Field1 = "aaa3",
Field2 = 9,
Field3 = DateTime.Now
};
string jsonStr = JsonSerializer.Serialize(t1);
Console.WriteLine(jsonStr);
轉成 JSON 字串的方式非常簡單,但印出來的文字其實是一整行的,閱讀不易,可以再加一個 JsonSerializerOptions 類型的參數去格式化字串:
TestClass t1 = new TestClass
{
Field1 = "aaa3",
Field2 = 9,
Field3 = DateTime.Now
};
JsonSerializerOptions options = new JsonSerializerOptions
{
WriteIndented = true
};
string jsonStr = JsonSerializer.Serialize(t1, options);
Console.WriteLine(jsonStr);
至於反序列化也不會太難,方式如下:
TestClass t2 = JsonSerializer.Deserialize<TestClass>(jsonStr);
Console.WriteLine(t2.ToString());
參考資料