C# 将反序列化的动态Json转换为强类型类

C# 将反序列化的动态Json转换为强类型类,c#,json,serialization,dynamic,javascriptserializer,C#,Json,Serialization,Dynamic,Javascriptserializer,我有一个消息格式化程序类,需要能够序列化和反序列化JSON消息。这个集中的类将由从服务器发送和接收消息的独立客户端调用。我遇到的问题是,我不知道我将在响应消息中接收到什么类类型。序列化部分很好,代码如下 public override object Serialize(object message) { return new JavaScriptSerializer().Serialize(message); } 我能得到的最接近的方法是使用这样的动态操作符进行反序列化 public o

我有一个消息格式化程序类,需要能够序列化和反序列化JSON消息。这个集中的类将由从服务器发送和接收消息的独立客户端调用。我遇到的问题是,我不知道我将在响应消息中接收到什么类类型。序列化部分很好,代码如下

public override object Serialize(object message)
{
   return new JavaScriptSerializer().Serialize(message);
}
我能得到的最接近的方法是使用这样的动态操作符进行反序列化

public override object Deserialize(object message)
{
   return new JavaScriptSerializer().Deserialize<dynamic>(message.ToString());
}

但是,如果事先不知道响应类,我尝试的任何方法都不会起作用。我曾考虑过将类名存储在Json对象中,并使用激活器来加速它,但有没有更干净的方法来实现这一点?

尝试使用泛型方法

public  T Deserialize<T>(object message)
{
    return new JavaScriptSerializer().Deserialize<T>(message.ToString());
} 

您可以使用JSON.NET并在序列化过程中嵌入类型信息,而不是使用JavaScriptSerializer。详情请参阅:

然后,您可以在反序列化过程中从Json字符串中提取类型信息,如下所示:

这肯定有效,我目前已经实施了。是否有其他方法来梳理传入消息,以便它能够自动提取强类型类,并将其提供给反序列化方法?
public  T Deserialize<T>(object message)
{
    return new JavaScriptSerializer().Deserialize<T>(message.ToString());
}