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

问题描述 投票:1回答:1

上下文:我将数据序列化为消息队列。消息队列将接受异构类型,需要由接收器进行反序列化。

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

我知道我可以使用TypeNameHandling在JSON中嵌入该类型,但是当调用DeserializeObject时,我仍然没有得到强类型的结果(因为,返回的对象不会被强制转换为嵌入的Type)。

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

c# json json.net
1个回答
2
投票

您可以将Type(类)名称嵌入到数据中。反序列化时,你可以使用一点点反射和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);
© www.soinside.com 2019 - 2024. All rights reserved.