小编Gir*_*esh的帖子

即使添加了Object Mapper,Jackson也无法检测到JAXB注释

我正在尝试使用带有JaxB @XmlRootElement注释的CXF + Jackson配置REST服务的简单示例.我已经在堆栈溢出以及像这样的博客中经历了各种类似的问题,并提出了以下解决方案:

创建自定义对象映射器,如下所示:

public class CustomObjectMapper extends ObjectMapper{

    public CustomObjectMapper() {
    super();
    super.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
    super.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
    AnnotationIntrospector primary = new JaxbAnnotationIntrospector();
    AnnotationIntrospector secondary =  new JacksonAnnotationIntrospector();
    AnnotationIntrospector pair = new AnnotationIntrospector.Pair(primary, secondary);
    super.setAnnotationIntrospector(pair);
    }

}
Run Code Online (Sandbox Code Playgroud)

在Spring配置中将此传递给Json提供的构造函数

  <bean id="jacksonMapper" class="com.myorg.test.CustomObjectMapper" />

    <jaxrs:providers>
        <bean class="org.codehaus.jackson.jaxrs.JacksonJsonProvider">
            <constructor-arg ref="jacksonMapper" />
        </bean>
    </jaxrs:providers>
Run Code Online (Sandbox Code Playgroud)

添加了一个JsonBean带有JAXB根元素注释的简单类

@XmlRootElement(name = "JsonBean")
public class JsonBean {
    private String val1;
    private String val2;

    public String getVal1() {
        return val1;
    }

    public void setVal1(String val1) {
        this.val1 …
Run Code Online (Sandbox Code Playgroud)

json jaxb jackson

6
推荐指数
1
解决办法
5454
查看次数

标签 统计

jackson ×1

jaxb ×1

json ×1