加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Json.NET转换器反序列化属性

发布时间:2020-12-16 18:46:02 所属栏目:百科 来源:网络整理
导读:我有一个类定义,它包含一个返回一个接口的属性。 public class Foo{ public int Number { get; set; } public ISomething Thing { get; set; }} 尝试使用Json.NET序列化Foo类给我一个错误消息,像“无法创建类型为’ISomething’的实例。ISomething可能是一
我有一个类定义,它包含一个返回一个接口的属性。
public class Foo
{ 
    public int Number { get; set; }

    public ISomething Thing { get; set; }
}

尝试使用Json.NET序列化Foo类给我一个错误消息,像“无法创建类型为’ISomething’的实例。ISomething可能是一个接口或抽象类。

是否有一个Json.NET属性或转换器,让我指定一个具体的Something类在反序列化过程中使用?

你可以用 Json.NET做的事情之一是:
var settings = new JsonSerializerSettings();
settings.TypeNameHandling = TypeNameHandling.Objects;

JsonConvert.SerializeObject(entity,Formatting.Indented,settings);

TypeNameHandling标志将为JSON添加一个$ type属性,这允许Json.NET知道需要将对象反序列化为哪个具体类型。这允许你反序列化一个对象,同时仍然实现一个接口或抽象基类。

然而,缺点是,这是非常Json.NET特定的。 $ type将是一个完全限定类型,所以如果你使用类型info序列化它,解串器需要能够理解它。

文档:Serialization Settings with Json.NET

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读