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

问题描述 投票:0回答:1

我有一个这样的课:

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

java json jackson
1个回答
0
投票

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

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

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

public class SampleDto {
    @JsonIgnore
    private String normalProperty1;
    private String normalProperty2;
    ...
© www.soinside.com 2019 - 2024. All rights reserved.