我正在尝试使用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>
感谢所有答案
答案 0 :(得分: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>