首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有一种方法可以让EclipseLink Moxy的JAXB元素集合周围自动生成泽西元素名称?

是否有一种方法可以让EclipseLink Moxy的JAXB元素集合周围自动生成泽西元素名称?
EN

Stack Overflow用户
提问于 2013-09-20 20:36:41
回答 1查看 1.3K关注 0票数 2

我正在使用Jersey2.1API返回JAXB注释对象的列表。

我有个班人

代码语言:javascript
运行
复制
@XmlRootElement(name = "person")
public class Person {  ...

在泽西API中,当我返回一个Person列表并将输出设置为xml时,它将创建一个名为List的包装器:

代码语言:javascript
运行
复制
<People>
   <Person>
      .. fields
   </Person>
</People>

当我将输出设置为JSON格式时,它不会添加额外的人员包装器,我希望这样做。我使用EclipseLink Moxy作为JSON。是否有办法使JSON输出看起来与XML相同?

我遇到了一个名为FEATURE_XMLROOTELEMENT_PROCESSING的Jerse1.XAPI字段,它应该启用这个功能,但我不知道如何在2.x中设置它。而且,它正在为XML输出执行此操作,这似乎表明它已经设置好了。我只需要让JSON保持不变!

任何帮助都将不胜感激,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-09-21 10:46:53

你可以这样做:

Java模型

可以在对象模型中引入一个名为People的新类。

People

代码语言:javascript
运行
复制
import java.util.List;
import javax.xml.bind.annotation.*;

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

    @XmlElementRef
    private List<Person> person;

}

Person

代码语言:javascript
运行
复制
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="Person")
public class Person {

}

RESTful服务

而不是:

代码语言:javascript
运行
复制
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Person> read() {

你会这样做:

代码语言:javascript
运行
复制
@GET
@Produces(MediaType.APPLICATION_JSON)
public People read() {

默认情况下,MOXy将不包含根元素。在使用泽西时,您可以利用MoxyJsonConfig对象(请参阅:http://blog.bdoughan.com/2013/06/moxy-is-new-default-json-binding.html)。

代码语言:javascript
运行
复制
import javax.ws.rs.ext.*;
import org.eclipse.persistence.jaxb.JAXBContextProperties;
import org.glassfish.jersey.moxy.json.MoxyJsonConfig;

@Provider
public class MOXyJsonContextResolver implements ContextResolver<MoxyJsonConfig> {

    private final MoxyJsonConfig config;

    public MOXyJsonContextResolver() {
        config = new MoxyJsonConfig()
            .setIncludeRoot(true);
    }

    @Override
    public MoxyJsonConfig getContext(Class<?> objectType) {
        return config;
    }

}

还可以利用MOXy的MOXyJsonProvider类执行相同的配置:

  • http://blog.bdoughan.com/2012/05/moxy-as-your-jax-rs-json-provider.html
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18925455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档