gpt4 book ai didi

json - 使用 ServiceStack.Text 作为 SignalR 的 JSON 序列化程序

转载 作者:行者123 更新时间:2023-12-04 08:49:16 25 4
gpt4 key购买 nike

为了在我的应用程序层之间实现一致的序列化,我想对我在其他地方使用的 SignalR 使用相同的序列化库 (ServiceStack.Text)。

关注 SignalR 的 Wiki 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 尝试访问“I”但它收到“Id”。我无法找到 SignalR 服务器端源代码的相应部分。

我做错了什么还是我必须创建一个更复杂的包装器才能使用 ServiceStack.Text 作为 JSON 序列化程序?

最佳答案

我不会费心去尝试。我们非常依赖 JSON.NET,我们甚至在下一个版本中删除了这种可扩展性。对不起。

关于json - 使用 ServiceStack.Text 作为 SignalR 的 JSON 序列化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16215640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com