java - Jackson JSON 中 @JsonProperty 映射的辅助方法

标签 java jackson bean-validation

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/

相关文章:

JAVA SSL 为服务器端的每个客户端生成一个新的 keystore 证书

java - Windows 上 Tomcat 上的 Log4j2 产生警告 "unable to instantiate org.fusesource.jansi.WindowsAnsiOutputStream"

java - 连接到 URL 时出错 - PKIX 路径构建失败

java - Jackson @JsonInclude(Include.ALWAYS) 适用于所有 child

jpa - 在回调事件 : 'prePersist' 上执行自动 Bean 验证时违反了 Bean 验证约束

java - 如何将 Sleuth 集成到 Spring Boot 1.5 中以在较新的 Spring Boot 2.2 中传播跟踪 ID?

java - java中使用jackson注解反序列化字符串和对象

java - 使用 Jackson Mapper 将 JSON 数据映射到 Java POJO 类

java - Java 源文件中的重音字符在 JSF 页面中无法正确显示

java - 如何设置 log4j 来记录违反 JSR 303 验证的值?