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

时间:2018-03-05 21:08:38

标签: java json jackson

我有一个这样的课程:

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存储在数据库中并在没有sensitiveProperties的情况下存储它,我不能忽略这些属性,因为在其他进程中需要它们。

我当时正在考虑使用杰克逊的观点来解决这个问题,但我不知道杰克逊是否有什么特别的东西我可以说,每个json对象都有属性" sensitiveProperty1"将其设置为null。

我正在使用Java和Jackson

1 个答案:

答案 0 :(得分:0)

我认为this site涵盖了你正在寻找的东西。

基本上你要做的是在课堂级别添加@JsonIgnoreProperties(value = { "intValue" })或在场级别添加@JsonIgnore,然后杰克逊应该为你处理其余部分。

在你的情况下看起来像:

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