JsonIgnore 来自父级的子属性

Posted

技术标签:

【中文标题】JsonIgnore 来自父级的子属性【英文标题】:JsonIgnore child property from parent 【发布时间】:2021-12-18 17:18:38 【问题描述】:

在将子类上的父属性序列化为 Json 时,我试图忽略它,但它不起作用。

我有一个这样的对象:

public class DependantQuestionCreateRequest : QuestionCreateRequest

    [JsonIgnore]
    public new DependantQuestionCreateRequest DependantQuestion;


如您所见,我隐藏父属性 DependantQuestion 只是为了向子属性添加 JsonIgnore 属性。

这是因为两个类是相等的,唯一的区别是父类可以在里面包含一个子类作为属性,而子类不能。

我不想将所有道具从一个模型复制到另一个模型,只是为了避免在 DependantQuestion 属性上大摇大摆地进行序列化。

虽然这段代码不起作用,我的大摇大摆地显示它就像

"dependantQuestion" : "string"

在我看来,这意味着 JsonIgnore 属性实际上被忽略了。

有谁知道在孩子身上隐藏这个父属性的方法?

【问题讨论】:

尝试使用virutal/override并覆盖子属性,而不是用关键字new隐藏它 是的,使用虚拟/覆盖this works 谢谢你们。它正在工作:)。 【参考方案1】:

@gunr2171 和 @Fabjan 在 cmets 上提供的解决方案回答了我的问题。

public class BaseClass

    public virtual string MyProperty get;set; 


public class ChildClass : BaseClass

    [JsonIgnore]
    public override string MyProperty get;set;

【讨论】:

以上是关于JsonIgnore 来自父级的子属性的主要内容,如果未能解决你的问题,请参考以下文章

Java - 为啥另一个包中的子级无法通过父级引用访问父级的受保护方法?

mysql如何找到相对于父级的子行总数

使用MySQL SELECT查询获取父级的子级

MAX日期的Laravel子查询-与父级的子查询链接中的日期时间格式无效

Wordpress 3.5 - 如何仅使用 wp_nav_menu 显示父级的子菜单?

WooCommerce - 使用永久链接和 html 显示来自特定父级的产品子类别