【问题标题】:Jackson ignore @Size when serializing序列化时杰克逊忽略@Size
【发布时间】:2018-02-28 15:56:14
【问题描述】:

我有一种情况,我想在验证失败时向用户返回请求以及相应的错误消息。我遇到的问题是我使用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(错误验证对象)。我已经确认一个有效的对象没有序列化问题。 所以我的问题是这样的:如何让 Jackson 在序列化时忽略 javax.validation 注释?

提前致谢!

【问题讨论】:

  • 您的异常应该指向代码中进行验证的位置。在那里,您应该能够找到指向如何启用或禁用它的东西。到目前为止,我只能找到杰克逊家伙不想在他们的库中实现内置验证的证据,所以你的验证器可能使用了某种钩子。

标签: java jackson


【解决方案1】:

默认情况下,Jackson 不会对 JSON 序列化调用 bean 验证 (javax.validation.constraints)。要么默认行为被覆盖/自定义,要么有任何类型的拦截器/钩子可以做到这一点。

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

【讨论】:

    猜你喜欢
    • 2018-08-16
    • 2015-05-18
    • 1970-01-01
    • 2016-04-19
    • 2016-01-16
    • 2018-12-12
    • 2014-06-22
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多