Spring MVC Jackson 消息转换器:“冲突的设置器定义”
Posted
技术标签:
【中文标题】Spring MVC Jackson 消息转换器:“冲突的设置器定义”【英文标题】:Spring MVC Jackson message converter: "Conflicting setter definitions" 【发布时间】: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 消息转换器,但没有成功
【问题讨论】:
【参考方案1】:使用MixIn
功能。
interface StudentMixIn
@JsonIgnore
void setName(String name);
并在ObjectMapper
中注册,覆盖Jackson
消息转换器。
另见:
Dynamic addition of fasterxml Annotation? Jackson conditional @JsonUnwrapped Jackson parse json with unwraping root, but without ability to set @JsonRootName【讨论】:
以上是关于Spring MVC Jackson 消息转换器:“冲突的设置器定义”的主要内容,如果未能解决你的问题,请参考以下文章
spring mvc json 直接把一个对象转换成json格式输出到jsp页面
JSON Spring Web MVC 转换:(错误:java.lang.NoSuchMethodError:org.codehaus.jackson.type.JavaType.isMapLikeT
jquery ajax向spring mvc controller中传值并接受及解析返回值