Files
duplicati/Duplicati/Server/Duplicati.Server.Serialization/Serializer.cs
T

50 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace Duplicati.Server.Serialization
{
public class Serializer
{
protected static readonly JsonSerializerSettings m_jsonSettings;
protected static readonly Formatting m_jsonFormatting = Formatting.Indented;
static Serializer()
{
m_jsonSettings = new JsonSerializerSettings();
m_jsonSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
m_jsonSettings.ContractResolver = new JsonSerializer();
m_jsonSettings.Converters = new JsonConverter[] {
new SerializableStatusCreator(),
new SettingsCreator(),
new FilterCreator(),
new DayOfWeekConcerter()
}.ToList();
}
public static void SerializeJson(System.IO.TextWriter sw, object o)
{
Newtonsoft.Json.JsonSerializer jsonSerializer = Newtonsoft.Json.JsonSerializer.Create(m_jsonSettings);
using (var jsonWriter = new JsonTextWriter(sw))
{
jsonWriter.Formatting = m_jsonFormatting;
jsonSerializer.Serialize(jsonWriter, o);
jsonWriter.Flush();
}
}
public static T Deserialize<T>(System.IO.TextReader sr)
{
Newtonsoft.Json.JsonSerializer jsonSerializer = Newtonsoft.Json.JsonSerializer.Create(m_jsonSettings);
using (var jsonReader = new JsonTextReader(sr))
{
jsonReader.Culture = System.Globalization.CultureInfo.InvariantCulture;
return jsonSerializer.Deserialize<T>(jsonReader);
}
}
}
}