Json.Net可以将反序列化的对象转换为Json中嵌入的类型吗?

时间:2019-03-19 15:21:35

标签: c# json json.net

上下文:我正在将数据序列化为消息队列。消息队列将接受异构类型,这些类型需要由接收方反序列化。

问题:通常在反序列化时,我会使用类似以下的代码: JsonConvert.DeserializeObject<Type>(object);但是,由于类型是异构的,所以我不会提前知道所需的类型。

我知道我可以使用TypeNameHandling将类型嵌入JSON中,但是在调用DeserializeObject时,我仍然没有得到强类型化的结果(例如,返回的对象尚未转换为嵌入的Type)。

问题:Json.Net可以将反序列化的对象转换为Json中嵌入的类型吗?如果不是,我最好的选择是从JSON获取类型,然后调用DeserializeObject以便可以转换对象?

1 个答案:

答案 0 :(得分:2)

您可以在数据中嵌入类型(类)名称。反序列化时,可以使用一点反射和JsonConvert.DeserializeObject(string, Type)

string typeName; //Got from message
string json; //Got from message
Type type = Type.GetType($"Namespace.{typeName}, MyAssembly");
var obj = JsonConvert.DeserializeObject(json, type);