JsonFileSerializer
using Newtonsoft.Json;
using System.IO;
namespace Relativity.Transfer
{
internal class JsonFileSerializer : IFileSerializer
{
public void Serialize(object value, string file)
{
using (FileStream stream = File.Open(file, FileMode.OpenOrCreate, FileAccess.ReadWrite))
using (StreamWriter textWriter = new StreamWriter(stream))
using (JsonTextWriter jsonTextWriter = new JsonTextWriter(textWriter)) {
JsonSerializer jsonSerializer = new JsonSerializer();
jsonSerializer.Formatting = Formatting.Indented;
jsonSerializer.PreserveReferencesHandling = PreserveReferencesHandling.None;
jsonSerializer.Serialize(jsonTextWriter, value);
jsonTextWriter.Flush();
}
}
T IFileSerializer.Deserialize<T>(string file)
{
return Deserialize<T>(file);
}
public static T Deserialize<T>(string file)
{
using (StreamReader reader = new StreamReader(file))
using (JsonTextReader reader2 = new JsonTextReader(reader))
return new JsonSerializer().Deserialize<T>(reader2);
}
}
}