JSON响应:使用JAXB的Spring

时间:2012-09-27 11:34:49

标签: java json spring jaxb resteasy

Tech Stack:Java 1.6,JAXB,Spring 3,JAX-RS(RESTEasy),XSD

您好,

我使用Spring和JAX-RS创建RestFul Webservice。

除了生成的响应包含setters信息,例如。

之外,一切正常
  {
    ...

    "setName": true,
    "setId": true,
    "setAddress": true,
    "setAge": true,
}

我不知道可能导致这种情况的原因是什么? 我怎么能关掉这个?

阿迪

更新1:

PersonRequest类由JAXB生成,包含所有javax.xml.bind.annotation。*注释。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "personResponse " })
@XmlRootElement(name = "PersonResponse ")
public class PersonResponse {

    @XmlElement(name = "Name", required = true)
    protected String name;

    @XmlElement(name = "Id", required = true)
    protected String id;

    // and the setters and getters



}

,资源看起来像这样:

@Component
@Path("/person")
public class PersonImpl implements Person {

    @Override
    @GET
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, "application/x-amf" })
    @Path("v1")
    public PersonResponse getPerson() {

       ....
       ....
    }


}

**更新2 ** 仅当Content-Type为json时才会发生这种情况,如果内容类型为' xml',则不会返回setter。如果这有帮助。

2 个答案:

答案 0 :(得分:0)

我怀疑堆栈的其他部分是在你的域模型的额外字段中编织(即一些ORM库这样做)。要确认您可以使用java.lang.reflect API查看您的班级在ClassLoader加载后的字段。

答案 1 :(得分:0)

问题出现在xjb文件中,有关详细信息,请查看相关问题here