【问题标题】:Spring MVC Jackson message converter: "Conflicting setter definitions"Spring MVC Jackson 消息转换器:“冲突的设置器定义”
【发布时间】:2019-09-01 07:10:48
【问题描述】:

我有一个带有控制器的 Spring Boot 应用程序,该控制器具有一个接受对象作为参数的端点,如下所示:

@RestController
public class MyController {
    @PostMapping("/Student")
    public String createStudent(@RequestBody Student student) {
        //validate and persist Student object
        return "ok";
    }
}

我的问题是 Student 对象有一个重载的 setter 方法,每当我 POST 到这个端点时,我都会收到一个 Jackson 错误,指出存在冲突的 setter 方法并且它无法解析。

我在网上搜索过,似乎解决方案是将 @JsonIgnore 添加到 setter 方法之一,但是 Student 对象来自第 3 方库,我根本无法编辑它。

那么我该如何解决呢?有没有一种简单的“春天”方式来完成这项工作?我尝试过修改 Spring 的 Jackson HTTP 消息转换器,但没有成功

【问题讨论】:

    标签: spring spring-boot spring-mvc jackson jackson2


    【解决方案1】:

    使用MixIn 功能。

    interface StudentMixIn {
        @JsonIgnore
        void setName(String name);
    }
    

    并在ObjectMapper 中注册,覆盖Jackson 消息转换器。

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2015-08-25
      • 2019-04-21
      相关资源
      最近更新 更多