3
using System.Runtime.Serialization;
4
using ServiceStack.DesignPatterns.Serialization;
5
using ServiceStack.Text;
7
namespace ServiceStack.ServiceModel.Serialization
9
public class JsonDataContractSerializer
11
public static JsonDataContractSerializer Instance = new JsonDataContractSerializer();
13
public ITextSerializer TextSerializer { get; set; }
15
public static void UseSerializer(ITextSerializer textSerializer)
17
Instance.TextSerializer = textSerializer;
18
JsonDataContractDeserializer.Instance.TextSerializer = textSerializer;
21
public bool UseBcl { get; set; }
23
public string SerializeToString<T>(T obj)
25
if (TextSerializer != null)
26
return TextSerializer.SerializeToString(obj);
28
#if !SILVERLIGHT && !MONOTOUCH && !XBOX
30
return JsonSerializer.SerializeToString(obj);
32
if (obj == null) return null;
33
var type = obj.GetType();
36
using (var ms = new MemoryStream())
38
var serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(type);
39
serializer.WriteObject(ms, obj);
41
using (var sr = new StreamReader(ms))
43
return sr.ReadToEnd();
49
throw new SerializationException("JsonDataContractSerializer: Error converting type: " + ex.Message, ex);
52
return JsonSerializer.SerializeToString(obj);
56
public void SerializeToStream<T>(T obj, Stream stream)
58
if (TextSerializer != null)
60
TextSerializer.SerializeToStream(obj, stream);
62
#if !SILVERLIGHT && !MONOTOUCH && !XBOX
65
var serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
66
serializer.WriteObject(stream, obj);
71
JsonSerializer.SerializeToStream(obj, stream);