使用Jackson在JSON中验证格式错误的日期

时间:2014-04-09 10:17:15

标签: java json validation date jackson

我目前正在使用Jackson的objectMapper来序列化JSON中的值并将它们放在POJO中。我需要验证这些值,因此我使用验证注释,如@ Regex,@ Max等。

所以现在发生的是我调用objectMapper方法来读取JSON

publicEnquiry = objectMapper.readValue(jsonNode, Enquiry.class);

然后我检索列表中的所有验证消息,然后将其返回给用户。

payload = publicEnquiry.getPayload();
    Set<ConstraintViolation<Enquiry<payload>>> constraintViolations =
            publicEnquiry.getConstraintViolations();

如果我发送一个太大的整数,一个错误的格式化字符串,或任何不会给序列化带来问题的东西,但是如果我发送一个以意外格式格式化的日期,或者只是格式错误,如“2010”,那么一切正常-02“而不是”2010-02-03“,然后我得到一个JsonMappingException。这当然是预期的,因为映射器无法理解格式错误的日期。

但是,我需要管理这些异常,并且能够在每次发生时添加验证消息,这种方式对用户来说似乎是透明的。我需要一条消息,例如“验证失败:预期的格式是yyyy-MM-dd”。我需要在正常情况下对POJO的其他属性执行正常验证。

不幸的是,杰克逊没有在objectMapper中提供一个方法来跳过异常生成器字段并返回那些麻烦的字段列表,或类似的东西。如果出现问题,它就会失败。

有人会有解决方案或至少有关于如何进行的建议吗?

0 个答案:

没有答案