首页 >后端开发 >C++ >如何使用 JSON.NET 反序列化接口实例集合?

如何使用 JSON.NET 反序列化接口实例集合?

Barbara Streisand
Barbara Streisand原创
2025-01-06 07:00:40360浏览

How to Deserialize Collections of Interface Instances Using JSON.NET?

反序列化接口实例集合

尝试使用 JSON.NET 序列化和反序列化接口实例集合时,重要的是要解决反序列化期间的类型识别问题。在这种情况下遇到的错误消息表明无法直接实例化接口或抽象类。

自定义类型绑定器方法

一种建议的方法涉及使用定制类型解析器绑定器。这涉及创建一个实现 ITypeResolver 接口的自定义类,并在反序列化期间将其提供给 JsonSerializer。自定义绑定器将负责根据接口类型解析具体类型。

JSON.NET 默认设置

但是,使用 JSON.NET,这是可能的无需自定义绑定器即可实现反序列化。通过调整 JsonSerializerSettings 对象中的 TypeNameHandling 和 TypeNameAssemblyFormat 设置,JSON.NET 可以在序列化和反序列化过程中自动处理类型识别。

序列化

序列化时,指定下列的设置:

string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,
    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});

反序列化

反序列化时,使用以下设置:

var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects
});

使用这些设置,JSON.NET 将自动根据序列化期间提供的类型信息识别接口实例的具体类型。这允许对包含实现不同接口的对象的集合进行无缝反序列化。

以上是如何使用 JSON.NET 反序列化接口实例集合?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn