java - Spring MVC 强制 Jackson 只使用 setter

标签 java json spring spring-mvc jackson

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

我在 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;
}

我假设没有 setter 并且没有字段的可见性, jackson 不会映射“启用”字段...但是如果我发送一个启用设置为 true 的正文,它会映射它,

任何人都可以建议我还需要做什么吗?

谢谢

最佳答案

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

@JsonProperty(access = Access.READ_ONLY)
private boolean enabled;
PS。您不需要使用 @NotNull 进行注释或初始化为 false,因为您使用的是原始类型。

关于java - Spring MVC 强制 Jackson 只使用 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740732/

相关文章:

ios - 如何使用 Alamofire 创建 JSON 并将其发送到服务器?

java - Spring boot - 找不到类型 User 的属性 ID

spring - 如何在Spring Boot中创建一个可执行jar?

ios - Swift - 如何从模型中的 API 调用返回 json 对象以在 View Controller 中使用

java - Spring Batch 作业参数限制为 250 个字符?

java - 使用 ListBlockingQueue 线程的并发运行由于某种原因被阻塞

java - Java中类与类之间传递变量

java - Android 相机在人像模式下保存图片

java - 在 linux 中使用 ProcessBuilder 执行 shell 命令

json - Node.Js、JSON 解析错误、输入意外结束