public interface IJsonSerializer
{
string Serialize(T value);
T Deserialize(string json);
}
2. 然後實作一個版本使用 System.Text.Json
using System.Text.Json;
public class SystemTextJsonSerializer : IJsonSerializer
{
public string Serialize(T value)
=> JsonSerializer.Serialize(value);
public T Deserialize(string json)
=> JsonSerializer.Deserialize(json);
}
3. 如果真的又想換回 Newtonsoft,也很簡單
using Newtonsoft.Json;
public class NewtonsoftJsonSerializer : IJsonSerializer
{
public string Serialize(T value)
=> JsonConvert.SerializeObject(value);
public T Deserialize(string json)
=> JsonConvert.DeserializeObject(json);
}
4. 使用方法
public class FooService
{
private readonly IJsonSerializer _serializer;
public FooService()
{
// 這裡決定要用哪個版本的 Serializer
_serializer = new SystemTextJsonSerializer();
}
public void Save(User user)
{
string json = _serializer.Serialize(user);
File.WriteAllText("foo.json", json);
}
public User Load()
{
string json = File.ReadAllText("foo.json");
return _serializer.Deserialize(json);
}
}