代码之家  ›  专栏  ›  技术社区  ›  Mike Baranczak

与Jackson一起只写入属性

  •  13
  • Mike Baranczak  · 技术社区  · 12 年前

    在我的实体类中,我试图创建一个只写字段(在序列化过程中被忽略,但通常会被反序列化)。

    @JsonProperty
    @JsonSerialize(using=NullSerializer.class)
    public String getPassword() {
        return password;
    }
    

    几乎 给出了我想要的:JSON包含“password”字段,但值始终为null。如何完全删除字段?

    2 回复  |  直到 12 年前
        1
  •  24
  •   radeklos    8 年前

    你可以设置 access 值:

    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;
    
        2
  •  18
  •   pb2q    12 年前

    使用 @JsonIgnore 就在 吸气剂 getPassword ,而不是使用 NullSerializer 。然后也使用 @JsonProperty("password") 设置者

    这应该允许 password 要反序列化,但序列化的JSON输出不会包括它。

    例如,一个“getter”方法将被忽略,除非另一个注释定义了要使用的替代方法,否则它将表示要序列化的属性(例如,建议属性“value”的“getValue”),并且不会输出任何此类属性。