首页 > 解决方案 > 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>

目前,该代码有时有效,而其他一些则无效。我不知道为什么会这样。对于随机的东西,我认为这可能是一个类加载问题,但我不确定。请如果有人可以为我提供一些帮助,我将不胜感激。

标签: javajbossjackson

解决方案


推荐阅读