杰克逊在序列化时忽略@Size

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杰克逊在序列化时忽略@Size相关的知识,希望对你有一定的参考价值。

我有一种情况,如果它失败验证以及相应的错误消息,我想向用户返回一个请求。我遇到的问题是我正在使用Jackson来处理JSON请求,而验证失败也导致Jackson无法序列化消息。

例如,如果我有这个对象:

 public class SomeRequest
 {
     @Size(min=1, max=10)
     private String someField;
     //getter and setter here
 }

...当我在字段无效时进行序列化时(假设它有11个字符)...

 ObjectMapper mapper = new ObjectMapper();
 output = mapper.writeValueAsString(someRequestInstance);

...我得到一个JsonProcessingException(Error(s)验证对象)。我已经确认有效对象没有序列化问题。所以我的问题是:在序列化时如何让杰克逊忽略javax.validation注释?

提前致谢!

答案

默认情况下,Jackson不会在JSON序列化上调用bean验证(javax.validation.constraints)。默认行为被覆盖/自定义或者有任何类型的拦截器/钩子这样做。

研究堆栈跟踪以找出确切异常发生的位置并挖掘它。

以上是关于杰克逊在序列化时忽略@Size的主要内容,如果未能解决你的问题,请参考以下文章

如何动态忽略杰克逊序列化的属性

杰克逊:我怎么能忽略getter但解析setter? [复制]

杰克逊:忽略getter,但不使用@JsonView

强制杰克逊在没有 JsonIgnore 的情况下忽略 isEmpty

杰克逊:忽略空@XmlWrapperElement 集合中的空格

如何用杰克逊反序列化空字符串?