我有一个基于 Jersey 的 (JAX-RS) Web 服务,它与数据库的接口比它所做的任何其他事情都多。Account是一个对象,其中包含一个嵌入的Address数组(也用@XmlRootElement标记):
@XmlRootElement
public class Account
{
ObjectId oid;
String name;
String email;
...
ArrayList< Address > addresses;
}
@XmlRootElement
public class Address
{
String street;
String city;
...
}
在读取操作中,我从数据库中获取了一个已填写的帐户,其中包含地址(在 Eclipse 中检查过)。当我将它们传回给我的调用者时(请参阅下面的 ReST 服务代码),所有帐户字段都会显示,但地址不会显示。为了发出请求并查看结果,我使用了Chrome 的Simple REST Client扩展:
{
"oid":"4fe252a73cc58a6da34eb11f",
"name":"Yosemite Sam",
"email":"sam@warnerbros.com"
(but no addresses)
}
我预计泽西岛会返回类似“{“oid”:“......”,“名称”:“Yosemite Sam”,“电子邮件”:“sam@warnerbros.com”,“地址”:[{“street”:“17 Mariposa Way”、“city”:“Los Angeles”、... }、{ ... }、{ ... } ] }”。
任何人都可以阐明(我认为)泽西岛可能无法在这里做的事情以及如何欺骗它去做吗?
万分感谢,
拉斯贝特曼
AccountService.java:
import javax.ws.rs.*;
...
@POST
@Path( "/find" )
@Produces( { "application/json", "application/xml" } )
public Response read( Account account )
{
Account result;
try
{
result = accountManager.readByEmailOrOid( account );
}
catch( AppException e )
{
return e.buildResponse();
}
catch( RuntimeException e )
{
return AppException.buildRuntimeResponse( e );
}
return Response.ok( result ).build(); // result has addresses, but they don't show up!
}