杰克逊fasterxml UnrecognizedPropertyException随机发生

时间:2019-04-30 17:21:07

标签: java jboss jackson

我有一个用@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>

当前该代码有时可以工作,而另一些则不能。我不知道为什么会这样。对于随机的东西,我认为这可能是一个类加载问题,但我不确定。 如果有人可以提供帮助,请给我帮助。

0 个答案:

没有答案