在某些情况下,从JSON中删除属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在某些情况下,从JSON中删除属性相关的知识,希望对你有一定的参考价值。

我有一个这样的课:

public class SampleDto {
    private String normalProperty1;
    private String normalProperty2;
    private String normalProperty3;
    private String sensitiveProperty1;
    private String sensitiveProperty2;

    public String getNormalProperty1() {
        return normalProperty1;
    }

    public void setNormalProperty1(String normalProperty1) {
        this.normalProperty1 = normalProperty1;
    }

    public String getNormalProperty2() {
        return normalProperty2;
    }

    public void setNormalProperty2(String normalProperty2) {
        this.normalProperty2 = normalProperty2;
    }

    public String getNormalProperty3() {
        return normalProperty3;
    }

    public void setNormalProperty3(String normalProperty3) {
        this.normalProperty3 = normalProperty3;
    }

    public String getSensitiveProperty1() {
        return sensitiveProperty1;
    }

    public void setSensitiveProperty1(String sensitiveProperty1) {
        this.sensitiveProperty1 = sensitiveProperty1;
    }

    public String getSensitiveProperty2() {
        return sensitiveProperty2;
    }

    public void setSensitiveProperty2(String sensitiveProperty2) {
        this.sensitiveProperty2 = sensitiveProperty2;
    }

}

应用程序中有一些部分需要按原样序列化它,因为该对象位于安全的环境中。

但是我需要将json存储在db中并在没有sensitiveProperties的情况下存储它,我不能忽略这些属性,因为在其他进程中需要它们。

我正在考虑使用Jackson视图来解决问题,但我不知道杰克逊中是否有一些特殊内容我可以说,每个具有属性“sensitiveProperty1”的json对象都将其设置为null。

我正在使用Java和Jackson

答案

我认为this site能够很好地满足您的需求。

基本上你要做的就是在班级增加@JsonIgnoreProperties(value = { "intValue" })或在场地级别添加@JsonIgnore然后杰克逊应该为你处理其余的事情。

在你的情况下,看起来像:

public class SampleDto {
    @JsonIgnore
    private String normalProperty1;
    private String normalProperty2;
    ...

以上是关于在某些情况下,从JSON中删除属性的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON 检查空数组

Android从后台堆栈中删除事务

从 xml 片段中删除 html 标签? [复制]

用片段替换某些东西

从 HTML 标记中删除某些属性

如何修复重叠的片段