JSON.NET 反序列化和接口属性:实用的解决方案
使用 JSON.NET 将 JSON 数据反序列化为 C# 对象在处理接口类型的属性时可能会遇到困难。 常见错误:JSON.NET 无法直接实例化接口。
解决方案在于利用类的构造函数中的具体类参数。 这会在反序列化期间引导 JSON.NET 找到正确的具体类。
这是一个例子:
<code class="language-csharp">public class Visit : IVisit { // Constructor crucial for JSON.NET to identify concrete types for deserialization. public Visit(MyLocation location, Guest guest) { Location = location; Guest = guest; } public long VisitId { get; set; } public ILocation Location { get; set; } public DateTime VisitDate { get; set; } public IGuest Guest { get; set; } }</code>
通过在构造函数中包含 MyLocation
和 Guest
(分别实现 ILocation
和 IGuest
的具体类),JSON.NET 可以成功地将 JSON 数据映射到适当的类型,从而克服接口实例化问题。 这种方法可以让您保留接口的灵活性,同时确保反序列化的顺利进行。
以上是如何在 JSON.NET 中反序列化 JSON 接口级属性?的详细内容。更多信息请关注PHP中文网其他相关文章!