在特定方法中取消@jsonIgnore

Posted

技术标签:

【中文标题】在特定方法中取消@jsonIgnore【英文标题】:cancel @jsonIgnore in specific method 【发布时间】:2020-12-14 14:40:23 【问题描述】:

有没有办法根据方法改变 JsonIgnore 行为?

在研究时,我发现了以下问题。但我想在.net 中做类似的事情 有没有办法在 .net 中做到这一点?

How to cancel @jsonIgnore in specific method

【问题讨论】:

【参考方案1】:

对于 Newtonsoft.Json,最简单的解决方案就是包含一个方法 ShouldSerializeFieldName,其中 FieldName 是您的字段名称。 例如,仅当其长度小于 500 时才会包含描述字段:

public class QClass  
    public string Title  get; set; 
    public string Description  get; set; 
    public bool ShouldSerializeDescription()
    
        return Description.Length<500;
    

....

var 结果 = JsonConvert.SerializeObject(source);

【讨论】:

在这个例子中,应该为所有的路由/方法设置序列化。我的问题是我们可以根据方法/控制器/路由来改变它 @katie77 - 那么请edit 提出您的问题并说明您的确切要求,最好使用minimal reproducible example。 有没有办法根据方法改变 JsonIgnore 行为? 很模糊,这个问题似乎解决了这个请求。由于您正在向c# 社区寻求帮助,因此可能能够帮助您的人可能无法从未直接包含在您的问题中的链接问题中了解 Java 序列化的详细信息。

以上是关于在特定方法中取消@jsonIgnore的主要内容,如果未能解决你的问题,请参考以下文章

git add 提交的特定代码取消掉

如何在 Rails 中使用延迟作业取消预定作业?

如何在整个 Rails 活动记录关联链中取消特定模型的默认范围?

根据数组中的值取消设置特定会话项

如何在运行时正确取消设置 PHP 中的类属性?

在特定时间取消重复警报