我有一个用@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
我知道有时Jackson的依赖项会出现问题,特别是当它与org.codehaus依赖项混合时,但是在我的情况下,Im在整个项目中都使用了来自fastxml的依赖项。 杰克逊对我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,其中定义了一些模块,以及一些已知与fastsxml的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>
当前该代码有时可以工作,而另一些则不能。我不知道为什么会这样。对于随机的东西,我认为这可能是一个类加载问题,但我不确定。 如果有人可以提供帮助,请给我帮助。