【问题标题】:Spring MVC force Jackson to only use settersSpring MVC 强制 Jackson 只使用 setter
【发布时间】:2017-09-30 03:29:01
【问题描述】:

我有一个使用 Jackson 和 @RequestBody 注释的 Spring MVC 应用程序。

我在 POJO 中有一个字段,我不想让 Jackson 映射,所以我让 lombok 将 setter 访问级别设置为 NONE。

@NotNull
@Setter(AccessLevel.NONE)
private boolean enabled = false;

我试图通过配置为强制 Spring 的 ObjectMapper bean 仅使用 setter:

@Bean
@Primary
public ObjectMapper getObjectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.NONE);
    return mapper;
}

我会假设如果没有设置器和字段的可见性,Jackson 不会映射“启用”字段...但是如果我发送一个启用设置为 true 的主体,它会映射它,

谁能告诉我还需要做什么?

谢谢

【问题讨论】:

  • 你想防止字段从 json 反序列化和序列化吗?还是只是反序列化?
  • @Strelok 我只是想阻止它被反序列化,我仍然希望它返回响应我只是不希望用户对其进行任何控制。

标签: java json spring spring-mvc jackson


【解决方案1】:

只需使用@JsonProperty 注释该字段并将访问权限设置为只读。

@JsonProperty(access = Access.READ_ONLY)
private boolean enabled;

PS。您无需使用 @NotNull 进行注释或初始化为 false,因为您使用的是原始类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多