反序列化接口实例集合
尝试使用 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中文网其他相关文章!