使用ServiceStack.Text作为JSON序列为SignalR
问题描述:
要让在我的应用程序层一致的序列化,我想我用在其他地方使用的SignalR相同的序列化库(ServiceStack.Text)。使用ServiceStack.Text作为JSON序列为SignalR
虽然以下SignalR的维基entry更换使用JSON序列化,我创造了这个基本的处理程序:
public class SignalrServiceStackJsonSerializer : IJsonSerializer
{
public void Serialize(object value, TextWriter writer)
{
var selfSerializer = value as IJsonWritable;
if (selfSerializer != null)
selfSerializer.WriteJson(writer);
else
JsonSerializer.SerializeToWriter(value, writer);
}
public object Parse(TextReader reader, Type targetType)
{
return JsonSerializer.DeserializeFromReader(reader, targetType);
}
}
集成:
var serializer = new SignalrServiceStackJsonSerializer();
GlobalHost.DependencyResolver.Register(typeof(IJsonSerializer),() => serializer);
不幸的是,它整合之后,SignalR JS客户端不会得到与默认序列化程序不同的程序包。看起来,默认序列化程序会生成(至少对于非用户消息)JSON,其属性的上限为1个字符,在使用ServiceStack.Text替换后不会发生。因此,SignalR试图访问'我',但它收到'Id'。我无法找到SignalR服务器端源代码的各个部分。
难道我做错了什么或做我必须创建一个更复杂的包装使用ServiceStack.Text作为JSON序列?
答
我不打扰。我们对JSON.NET有很深的依赖性,我们甚至在下一个版本中删除了这种可扩展性。抱歉。
好吧,这很糟糕;)但感谢您清除这个问题,我将不得不看看我如何解决ServiceStack.Text和JSON.Net的差异。 – Pharao2k 2013-04-25 17:07:15
嗡嗡..这不是一个好消息。我想我必须在我的应用程序中包含两个序列化程序。 – Filimindji 2014-02-04 16:02:13
为什么MS使用劣质的JSON SLOW JSON串行器? ServiceStack.Text,Jil和FastJSON击败了它。 – 2014-07-19 07:14:15