繁体   English   中英

RestEasy Jettison / Jackson定制

[英]RestEasy Jettison/Jackson customization

我正在尝试将具有JAXB批注的对象用于我的JAX-RS资源的application / json输出。 我在带有RestEasy的JBoss AS7上运行(两个版本均为7.1.1.Final和2.3.4.Final)。 问题是我想自定义JSON输出。 我必须注意,我不在乎是否使用Jettison或Jackson,但是我只能使Jettison正常工作(部署应用程序)而不会出错。 如果可能的话,我也只想在对象上坚持使用JAXB批注-但这不是必需的。

1)我想在XmlAttribute带注释的字段中省略“ @”。 我发现该属性如何与Jettison一起使用,但是我不知道如何在JBoss AS7上进行配置。 找不到任何ContextResolver示例。

2)我想拥有“普通” JSON数组,例如

@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {

    @XmlElementRef(type = Entry.class, required = false)
    // no difference with @XmlElement
    private Set<Entry> entries;
}

序列化为

{"entries":
  {"entry":[{...},{...},{...}]}
}

我希望

{"entries":
  [
   {"entry":{...}},
   {"entry":{...}},
   {"entry":{...}}      
  ]
}

或者只是(省略XmlRootElement)

{"entries":
 [{...},{...},{...}]
}

3)正如我指出的,我不在乎我将使用哪个提供程序(Jettison / Jackson),但很难找到有效的示例,该示例如何正确设置Maven依赖关系以使应用程序可以无错误地进行部署。 到目前为止,我正在使用:

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasyVersion}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>${resteasyVersion}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jettison-provider</artifactId>
        <version>${resteasyVersion}</version>
        <!--<scope>provided</scope>-->
        <exclusions>
            <exclusion>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.xml.stream</groupId>
                <artifactId>stax-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

感谢所有答案

到目前为止,我设法使Jackson正常工作并使用其特定于提供程序的注释(@JsonProperty ...等)解决了我的问题。 我试图只找到JAXB解决方案,但我也可以接受。

顺便说一句我的依赖

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxrs</artifactId>
        <version>${resteasyVersion}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jaxb-provider</artifactId>
        <version>${resteasyVersion}</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>${resteasyVersion}</version>
    </dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM