json 公共方法上的Java序列化行为

ars1skjm  于 2023-07-01  发布在  Java
关注(0)|答案(1)|浏览(122)

目前,我在Web服务器上创建了一个对象,然后它将作为JSON对象返回给我的客户端。

public class JsonClass{

    @SerializedName("field1")
    private myObject field1;

    public myObject getField1() {
        return field1;
    }

    public void setField1(myObject value) {
        this.field1 = value;
    }

    @SerializedName("field2")
    private myObject field2;

    public myObject getField2() {
        return field2;
    }

    public void setField2(myObject value) {
        this.field2= value;
    }

    public final boolean isValid() throws InvalidObjectException {
        if (field1 != null) field1 .isValid();
        if (field2 != null) field2 .isValid();
        return true;
    }

    @Override
    public int hashCode() {
        int result = 1;
        result = 31 * result + (field1 == null ? 0 : field1 .hashCode());
        result = 31 * result + (field2  == null ? 0 : field2 .hashCode());
        return result;
    }
}

我希望JSON对象是

{
  "field1": {
    "a": "123",
    "b": "456",
    "c": 789
  },
  "field2": {
    "a": "123",
    "b": "456",
    "c": 789
  }
}

然而,因为我的.isValid()方法是公共的,所以响应的JSON对象都有一个额外的属性“valid”:真的。

{
  "field1": {
    "a": "123",
    "b": "456",
    "c": 789,
    "valid": true
  },
  "field2": {
    "a": "123",
    "b": "456",
    "c": 789,
    "valid": true
  },
"valid": true
}

我不能将方法修饰符改为private或protected,因为其他包中的类需要调用验证方法。
如何消除额外的字段“valid”:JSON对象的true?
编辑:我正在使用Spring Framework进行请求处理和响应处理。Jackson在幕后。

suzh9iv8

suzh9iv81#

您可以将@JsonIgnore注解添加到您的公共方法中,该字段将从您的响应中删除。

相关问题