技术堆栈:Java 1.6、JAXB、Spring 3、JAX-RS (RESTEasy)、XSD
你好,
我使用 Spring 和 JAX-RS 来创建 RestFul Webservice。
一切工作正常,除了生成的响应包含 setter 信息,例如
{
...
"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 时才会发生这种情况,如果 Content-Type 为“xml”,则不会返回 setter。如果有帮助的话。
最佳答案
我怀疑堆栈的其他部分正在将额外的字段编织到您的域模型中(即某些 ORM 库会执行此操作)。为了确认您可以使用 java.lang.reflect
API 来查看您的类在被 ClassLoader
加载后具有哪些字段。
关于java - JSON 响应 : Spring with JAXB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12620450/