编程语言
首页 > 编程语言> > c#-序列化使用Json.Net声明为新的继承属性不起作用

c#-序列化使用Json.Net声明为新的继承属性不起作用

作者:互联网

Json.Net在序列化子类中的重写属性时没有问题.

public override ICollection<Person> Persons { get; set; }

但是,如果我尝试对该属性使用new,则序列化将失败.也不例外.人只是从不序列化.

public new ICollection<Person> Persons { get; set; }

为什么是这样?

(我知道,这个示例没有多大意义.这只是一个示例.以后的目标是能够更改属性public new ICollection< PersonDto> Persons {get; set;}的数据类型)

解决方法:

我发现了一种无需创建自定义JsonConverter的简单方法即可解决此问题

如果将属性JsonProperty放在该属性上,它将起作用.

[JsonProperty]
public new ICollection<PersonDto> Persons { get; set; }

我不知道为什么Json.Net在这里需要该属性.通常,它会序列化所有未用JsonIgnore装饰的内容.如果有人知道,欢迎您发表评论.

标签:serialization,json-net,c
来源: https://codeday.me/bug/20191201/2080170.html