当前位置: 首页 > 知识库问答 >
问题:

无法使用Jackson处理JAXB anotation

颜志业
2023-03-14

我正在尝试使用restTemplate(Spring)和Jackson 2.3.0构建一个JSON Web服务消费者

问题在于pojo的绑定,如下所示:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "DerniereFactureTest", propOrder = { "montantTTC" })
public class DerniereFactureTest {
  @XmlElement(name = "montant_TTC", required = true)
  protected BigDecimal montantTTC;
  ...<Getter and setter>...
}

Jackson输出以下错误:

org.springframework.http.converter.HttpMessageNotReadableException:无法读取JSON:无法识别的字段"montant_TTC"(类com.bouygtel.vgc.transverse.composant.ws.DerniereFactreTest),未标记为可忽略(一个已知属性:"montantTTC"])(......)引起的原因:com.fasterxml.jackson.databind.exc.未识别的属性:无法识别的字段"montant_TTC"(类com.bouygtel.vgc.transverse.composant.ws.DerniereFactreTest),未标记为可忽略(一个已知属性:"montantTTC"])

我无法更改Pojo注释。

以下是我的Spring配置:

<!-- Client REST -->
<bean class="org.springframework.web.client.RestTemplate" />

<!-- JAX-B: mapper JSON<->DTO -->
<bean
    class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <property name="objectMapper" ref="jacksonObjectMapper" />
</bean>

<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
    <property name="annotationIntrospector" ref="jaxbAnnotationInspector" />
</bean>

<bean id="jaxbAnnotationInspector"
    class="com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector" />

在调试时,我觉得没有使用JaxbAnnotationIntrospector(而是使用JacksonAnnotationIntrospector)。

有没有办法让Jackson使用JaxB注释?

谢谢你的建议。

共有1个答案

史承福
2023-03-14

今年Spring,我终于解决了自己的问题:

    <!-- le client REST -->
<bean class="org.springframework.web.client.RestTemplate">
    <property name="messageConverters">
        <list>
            <bean
                class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="supportedMediaTypes" value="application/json" />
                <property name="objectMapper">
                    <bean class="com.fasterxml.jackson.databind.ObjectMapper">
                        <property name="annotationIntrospector">
                            <bean
                                class="com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector" />
                        </property>
                    </bean>
                </property>
            </bean>
        </list>
    </property>
</bean>
 类似资料:
  • 我有三个从超级类(SensorData)继承的类 我想根据参数将一个json输入转换为其中一个类。我正在尝试使用Jackson StdDeserializer并创建一个自定义的反序列化程序 我的问题是,当我确定映射具体类的正确类型时,映射器再次调用自定义stdDeserializer。所以我需要一种方法来打破循环当我有正确的类型。stacktrace是下一个 输入示例 我只包含stacktrace

  • 我遵循这个链接的第二个答案(两个步骤)来实现视频到Youtube的上传:使用curl和api v3在Youtube上上传视频 代码工作正常,但当我执行时,我得到的响应是:状态:嵌入:true license:“YouTube”privacystatus:“unlisted”publicstatsviewable:true uploadstatus:“uploaded”

  • 问题内容: 我正在尝试使用的功能同时划分工作。当我使用以下代码时,它可以正常工作: 但是,当我以更加面向对象的方式使用它时,它将无法正常工作。它给出的错误信息是: 这是我的课: 任何人都知道问题可能是什么,或解决问题的简单方法? 问题答案: 问题在于,多处理必须使进程中的东西腌制,而绑定的方法却不能腌制。解决方法(无论你是否认为它“容易” 是向你的程序中添加基础结构,以允许对这些方法进行腌制,并使

  • 问题内容: 我想使用Node.js域来捕获异常。到目前为止,它正在运行,但是有一个地方我无法获得域来捕获异常。回调中的exception2是在domain.on(’error’)处理程序中捕获并处理的,但没有捕获exception1。奇怪的是,当抛出exception1时,它不会像我期望的那样关闭Node。这是我的示例应用程序: 为了使exception2执行,我注释掉了exception 1。

  • 我正在尝试通过批处理文件创建vbs。但是有一行我包含一个对象。批处理文件无法将闭括号 )写入vbs,这在运行vbs时会导致错误。 批处理文件代码为: 输出: vbs zipIt.vbs vbs输出:Microsoft (R) Windows Script Host版本5.8版权所有(C) Microsoft Corporation。保留所有权利。 C: \Users\arvind\Desktop\

  • 代码试图采用java.awt.color类使用jackson对象映射器对其进行序列化。获取生成的json字符串并将其反序列化回java.awt.color类。但是在进行反序列化时会出现以下错误。 线程"main"com.fasterxml.jackson.databind.JsonMappingException中的异常:找不到适合类型[简单类型,类java.awt.颜色]的构造函数:无法从JSO