Jackson 是否有一个辅助方法来返回给定 bean 字段名称的 @JsonProperty 注释值(即 JSON 属性键)?
上下文:
我使用 Jackson 将客户端提供的 JSON 转换为 Bean,然后使用 JSR-303 验证该 Bean。当验证失败时,我需要向客户端报告一条有意义的错误消息。验证对象引用 bean 属性;错误消息应引用 JSON 属性。因此需要从一个映射到另一个。
最佳答案
您可以通过 BeanDescription 对象获取相当多的信息,尽管获取信息非常棘手(主要是因为它主要是为 Jackson 的内部使用而设计的)。 但这被一些 Jackson 扩展模块使用,因此它是受支持的用例。所以:
ObjectMapper mapper = ...;
JavaType type = mapper.constructType(PojoType.class); // JavaType to allow for generics
// use SerializationConfig to know setup for serialization, DeserializationConfig for deser
BeanDescription desc = mapper.getSerializationConfig().introspect(type);
如果需要,您还可以安全地将其向上转换为 BasicBeanDescription
。
这使您可以访问大量信息;逻辑属性列表(通过它您可以找到代表它的 getter/setter/field/ctor-argument)、完全解析的方法(带注释)等。希望这已经足够了。 逻辑属性非常有用,因为它们包含外部名称(预期来自 JSON)和从 getter/setter 派生的内部名称。
关于java - Jackson JSON 中 @JsonProperty 映射的辅助方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8395447/