首页 文章

RestEasy Jettison / Jackson定制

提问于
浏览
1

我正在尝试使用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>

谢谢你的所有答案

1 回答

  • 0

    到目前为止,我设法使 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>
    

相关问题