Если вы похожи на меня и пытаетесь использовать DataContractJsonSerializer в кросс-платформенной кодовой базе, достаточно просто обернуть JSON.NET API (он же Newtonsoft.Json) в DataContractJsonSerializer:
using System;
using System.IO;
using System.Reflection;
using Newtonsoft.Json;
namespace System.Runtime.Serialization.Json
{
public class DataContractJsonSerializer
{
private Type type;
private JsonSerializer js;
public DataContractJsonSerializer (Type t)
{
this.type = t;
this.js = new JsonSerializer();
}
public object ReadObject(Stream stream)
{
StreamReader reader = new StreamReader(stream);
return js.Deserialize(reader, type);
}
public void WriteObject(Stream stream, object o)
{
StreamWriter writer = new StreamWriter(stream);
js.Serialize(writer, o);
writer.Flush ();
}
}
}
Конечно, напрашивается вопрос, почему бы не перейти к использованию JSON.NET API везде ... Мой личный опыт работы с этим API заключается в том, что он может работать медленнее, чем при использовании DCJS (по крайней мере, в моих неформальных тестах на Windows Phone).
Надеюсь, это поможет!