2014-07-16 21 views
0

我正在开发一个Java EE项目,并使用Jackson部署了我的Rest Web服务。该服务工作正常,但有一个问题我是,我没有得到根名称:REST服务返回没有根级环绕的JSON实体

这里有一个例子:


[{"idRegion":1,"intituleRegion":"Sous Massa Draa"}, 
{"idRegion":2,"intituleRegion":"Chawya W rdigha"},{"idRegion":3,"intituleRegion":"rabat sale zemmour zaer"}, 
{"idRegion":4,"intituleRegion":"grand casablanca "}, 
{"idRegion":5,"intituleRegion":"marrakech tansift lhawz"},{"idRegion":6,"intituleRegion":"essaouira"}, 
{"idRegion":7,"intituleRegion":"fes boulemane "}] 

知道我有定义:@XmlRootElement(NAME =“区域“)

JAXB BEAN:

package ma.propar.FireApp.Entites; 


@Entity 

@Table (name = "REGION") 

@XmlAccessorType(XmlAccessType.NONE) 

@XmlRootElement(name="region") 

public class Region { 

    @Id @GeneratedValue 
    @Column(name = "ID_REGION") 
    @XmlElement 
    private int idRegion; 

    @Column(name = "INTITULE_REGION") 
    @XmlElement 
    private String intituleRegion; 

    @OneToMany (targetEntity = Zone.class, cascade=CascadeType.ALL ,mappedBy="region") 
    private List<Zone> zones; 


    @WebMethod(exclude=true) 
    public List<Zone> getZones() { 
     return zones; 
    } 

    @WebMethod(exclude=true) 
    public void setZones(List<Zone> zones) { 
     this.zones = zones; 
    } 

    public Region() { 

    } 

    public int getIdRegion() { 
     return idRegion; 
    } 

    public void setIdRegion(int idRegion) { 
     this.idRegion = idRegion; 
    } 

    public String getIntituleRegion() { 
     return intituleRegion; 
    } 

    public void setIntituleRegion(String intituleRegion) { 
     this.intituleRegion = intituleRegion; 
    } 

    /*@WebMethod(exclude=true) 
    public List<Zone> getZones() { 
     return zones; 
    } 

    @WebMethod(exclude=true) 
    public void setZones(List<Zone> zones) { 
     this.zones = zones; 
    }*/ 

}

杰克逊JAX -rs:

<jaxrs:server id="regionservices" address="/regionservices"> 
    <jaxrs:serviceBeans> 
     <ref bean="regionMetier" /> 
    </jaxrs:serviceBeans> 
    <jaxrs:providers> 
     <bean class="org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider" /> 
    </jaxrs:providers> 
    <jaxrs:extensionMappings> 
     <entry key="json" value="application/json" /> 
    </jaxrs:extensionMappings> 
</jaxrs:server> 

任何机构都可以提供帮助吗?

+0

显示使用JAXB bean和Jackson配置。 –

+0

感谢回复Tchodroma,我编辑了我的帖子并添加了他们。 –

+0

你可以检查这个[stackoverflow答案](http://stackoverflow.com/questions/28229017/jackson-not-consuming-the-json-root-element)。 – Nishanth

回答

1

默认情况下,只有核心Jackson注释用于配置数据绑定方面。要启用JAXB注解的支持,你需要:

  1. 包括杰克逊-XC罐子,其中包含org.codehaus.jackson.xc.JaxbAnnotationIntrospector(杰克逊的1.x) 或com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector(杰克逊2.X)

  2. 注册此注释内省

你可以找到更多的细节here

杰克逊altern对@XmlRootElement的注释是@JsonRootName

类似于bind.annotation.XmlRootElement的注释,用于指示用于根级别换行的名称(如果启用换行)。

相关问题