using System; using System.IO; namespace MediaBrowser.Common.Serialization { /// /// Provides a wrapper around third party json serialization. /// public class JsonSerializer { public static void SerializeToStream(T obj, Stream stream) { Configure(); ServiceStack.Text.JsonSerializer.SerializeToStream(obj, stream); } public static void SerializeToFile(T obj, string file) { Configure(); using (StreamWriter streamWriter = new StreamWriter(file)) { ServiceStack.Text.JsonSerializer.SerializeToWriter(obj, streamWriter); } } public static object DeserializeFromFile(Type type, string file) { Configure(); using (Stream stream = File.OpenRead(file)) { return ServiceStack.Text.JsonSerializer.DeserializeFromStream(type, stream); } } public static T DeserializeFromFile(string file) { Configure(); using (Stream stream = File.OpenRead(file)) { return ServiceStack.Text.JsonSerializer.DeserializeFromStream(stream); } } public static T DeserializeFromStream(Stream stream) { Configure(); return ServiceStack.Text.JsonSerializer.DeserializeFromStream(stream); } public static T DeserializeFromString(string data) { Configure(); return ServiceStack.Text.JsonSerializer.DeserializeFromString(data); } private static bool IsConfigured = false; private static void Configure() { if (!IsConfigured) { ServiceStack.Text.JsConfig.ExcludeTypeInfo = true; ServiceStack.Text.JsConfig.IncludeNullValues = false; IsConfigured = true; } } } }