Spring MVC Jackson消息转换器:“冲突的setter定义”

问题描述 投票:1回答:1

我有一个带有控制器的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对象来自第三方库,我根本无法编辑它。

那我怎么解决这个问题呢?是否有一种简单的“春天”方式使这项工作?我已经玩过修改Spring的Jackson HTTP消息转换器,但没有成功

spring spring-boot spring-mvc jackson jackson2
1个回答
2
投票

使用MixIn功能。

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

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

也可以看看:

© www.soinside.com 2019 - 2024. All rights reserved.