上下文:我正在将数据序列化到消息队列中。消息队列将接受需要由接收方反序列化的异构类型。
问题:通常在反序列化时,我将使用类似以下的代码:JsonConvert.DeserializeObject<Type>(object);
但是,由于类型是异构的,因此我不会轻易知道所需的类型。
我知道我可以使用TypeNameHandling将类型嵌入JSON中,但是在调用DeserializeObject时,我仍然没有得到强类型化的结果(例如,返回的对象尚未转换为嵌入的Type)。
问题:Json.Net可以将反序列化的对象强制转换为Json中嵌入的类型吗?如果不是,我最好的选择是从JSON获取类型,然后调用DeserializeObject,以便可以转换对象?
您可以将类型(类)名称嵌入到数据中。反序列化时,可以使用一点反射和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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句