首页 > 后端开发 > C++ > 如何使用 Json.net 反序列化基本类型和派生类型列表并保留其实际类型?

如何使用 Json.net 反序列化基本类型和派生类型列表并保留其实际类型?

DDD
发布: 2025-01-21 18:35:09
原创
862 人浏览过

How Can I Deserialize a List of Base and Derived Types Using Json.net and Preserve Their Actual Types?

使用Json.net反序列化派生类型

假设您有一个基类Base和一个派生类Derived,其中Derived继承自Base。您有一个Base对象的列表,其中包含BaseDerived的实例。当您反序列化此列表的JSON表示形式时,您希望将派生类型检索为其实际类型,而不仅仅是作为Base对象。

为了实现这一点,Json.net提供了一个称为类型名称处理的功能。通过启用此功能并将其作为设置参数传递给序列化和反序列化操作,您可以指定对象类型应包含在序列化的JSON中。

<code class="language-csharp">Base object1 = new Base() { Name = "Object1" };
Derived object2 = new Derived() { Something = "Some other thing" };
List<Base> inheritanceList = new List<Base>() { object1, object2 };

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string Serialized = JsonConvert.SerializeObject(inheritanceList, settings);
List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);</code>
登录后复制

反序列化后,deserializedList将包含正确类型的BaseDerived对象。但是,启用类型名称处理有一个缺点:它会将所有对象和列表的名称包含在序列化的JSON中,这在某些情况下可能并不理想。

以上是如何使用 Json.net 反序列化基本类型和派生类型列表并保留其实际类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板