杰克逊在序列化时忽略@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? [复制]
强制杰克逊在没有 JsonIgnore 的情况下忽略 isEmpty