JPA / Jackson - 反序列化时排除字段,并在序列化时包含它们

时间:2016-12-12 22:22:05

标签: java serialization spring-boot jackson

我有一个带有几个字段的JPA实体(真正的字段更复杂)。我通过REST(Spring控制器中的POST操作)接收某些数据并立即将其存储在JPA实体中;我想看看是否有可能在发送请求时排除某些字段,杰克逊反序列化它,并构造对象。但与此同时,我希望在发回(对象被序列化)响应时包含这些字段。

@Table("key_card")
public final class KeyCard {
  private String username; // Don't want this to be sent as input,
                           // but want to be able to send it back
                           // in the response
  @NotBlank
  private final char[] password;
}

如果有办法解决这个问题,我只是试图不对它进行两次建模(对于请求和响应)。

1 个答案:

答案 0 :(得分:1)

您可以使用JSON视图:http://wiki.fasterxml.com/JacksonJsonView

Class Views {

   static class AlwaysInclude { }
   static class OnlyOnSerialize extends AlwaysInclude { }

}

然后在你的观点上:

@Table("key_card")
public final class KeyCard {

  @JsonView(Views.OnlyOnSerialize.class)
  private String username;

  @JsonView(Views.AlwaysInclude.class)
  @NotBlank
  private final char[] password;
}