2013-04-25 65 views
8

要让在我的应用程序层一致的序列化,我想我用在其他地方使用的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序列?

回答

2

我不打扰。我们对JSON.NET有很深的依赖性,我们甚至在下一个版本中删除了这种可扩展性。抱歉。

+7

好吧,这很糟糕;)但感谢您清除这个问题,我将不得不看看我如何解决ServiceStack.Text和JSON.Net的差异。 – Pharao2k 2013-04-25 17:07:15

+0

嗡嗡..这不是一个好消息。我想我必须在我的应用程序中包含两个序列化程序。 – Filimindji 2014-02-04 16:02:13

+0

为什么MS使用劣质的JSON SLOW JSON串行器? ServiceStack.Text,Jil和FastJSON击败了它。 – 2014-07-19 07:14:15

相关问题