假设我有一个简单的POJO,如下面注释了Jackson 2.1和Hibernate Validator 4.3.1注释:
final public class Person {
@JsonProperty("nm")
@NotNull
final public String name;
public Person(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
我将这样的JSON发送到Web服务:
{"name": null}
Run Code Online (Sandbox Code Playgroud)
报告ConstraintViolation时,Hibernate使用类成员标识符"name"而不是JsonProperty注释值.有谁知道是否可以让Hibernate Validator查看类的注释并使用该值代替?
理想情况下,它将看起来像这样:
List<String> props = objectMapper.getKnownProperties(MyPojo.class);
Run Code Online (Sandbox Code Playgroud)
,,没有这样的方法。通常可行的方法是将Include.ALWAYS显式设置为ObjectMapper的默认值,以反射方式实例化该类的实例,将其转换为映射,然后检查键集。但是,类仍可以覆盖给定注释的ObjectMapper的include行为。
有没有更优雅的方法?至少,有没有一种方法可以使用对象映射器覆盖类注释?
编辑:
只是为了澄清,这些pojos / javabeans / DTO是为与Jackson一起使用而设计的,并且已经绑定了注释以导致特定的序列化行为。碰巧的是,我需要动态地预先知道自己可能会遇到什么,理想情况下,无需复制杰克逊已经可用的信息。也就是说,如果另一个框架提供此功能,我很想知道。:)