java - Jackson fasterxml UnrecognizedPropertyException 随机发生
问题描述
我有一个用@JsonAlias 和@JsonProperty 注释的类,以允许从snake_case 属性映射到camelCase 属性。例子:
@JsonAlias({ "pedidoDevolucion", "pedido_devolucion" })
@JsonProperty(value = "pedido_devolucion", required = false)
private Boolean pedidoDevolucion;
问题是,有时当此代码尝试从 JSON 中的“pedido_devolucion”映射到 Java 对象中的“pedidoDevolucion”属性时,该代码可以完美运行,有时它会失败:
引起:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“pedido_devolucion”
进行映射的代码是:
import org.jboss.resteasy.client.ClientResponse;
public static <DtoT> DtoT getDTO(ClientResponse clientResponse, Class<DtoT> claseDto)
throws Exception {
DtoT response = null;
if (clientResponse.getStatus() == ClientResponse.Status.OK.getStatusCode()) {
response = claseDto.cast(clientResponse.getEntity(claseDto)); // this one
我知道杰克逊有时会遇到依赖问题,特别是当它与 org.codehaus 依赖混合时,但在我的情况下,我在整个项目中使用来自 fastxml 的那个。Jackson 对我的 pom 的相关依赖是:
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</dependency>
我还有一个 jboss-deployment-structure.xml ,我在其中定义了一些模块,以及一些已知与 fastersxml 的 Jackson 冲突的排除项:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.apache.cxf" export="true" meta-inf="export" />
<module name="org.jboss.ws.native.jbossws-native-core" />
<module name="org.apache.httpcomponents" />
<module name="org.jboss.remote-naming" />
<module name="org.jboss.xnio" />
<module name="org.hornetq" />
</dependencies>
<exclude-subsystems>
<subsystem name="weld" />
</exclude-subsystems>
<exclusions>
<module name="org.jboss.resteasy.resteasy-jackson-provider" />
</exclusions>
</deployment>
目前,该代码有时有效,而其他一些则无效。我不知道为什么会这样。对于随机的东西,我认为这可能是一个类加载问题,但我不确定。请如果有人可以为我提供一些帮助,我将不胜感激。