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

标签 java serialization spring-boot jackson

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

@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;
}

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

最佳答案

您可以使用 JSON View :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;
}

关于java - JPA/Jackson - 反序列化时排除字段并在序列化时包含它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41110690/

相关文章:

java - 将 java 包级信息放在哪里以供 javadoc 使用?

java - 再次执行操作之前的计时器

c++ - 序列化结构并使用 C++ 通过套接字发送它

java - 找不到 Spring Boot 2.1 EntityManagerFactory Bean

java - 二叉树中的 contains-method 总是返回 false java

java - 长时间挂起执行外部方法的初始化线程

java - 将复杂的对象图放入 gemfire 区域

c# - 在 xsd.exe 生成的类之后设置适当的 XML 命名空间

java - 在 Spring Boot 中定义 beans 有什么意义?

java - Spring Boot 从服务中的回调返回响应