我有一个基于泽西岛(JAX-RS)的Web服务,它可以连接数据库,而不是其它任何东西。 帐户是一个对象,其中包含所有其他类型的明显内容,地址的嵌入式数组(也标有 @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的简单REST客户端扩展程序:
{
"oid":"4fe252a73cc58a6da34eb11f",
"name":"Yosemite Sam",
"email":"sam@warnerbros.com"
(but no addresses)
}
我希望泽西岛返回类似“{”oid“:”......“,”name“:”Yosemite Sam“,”email“:”sam @warnerbros.com“,”地址“:[{”street“ :“17 Mariposa Way”,“city”:“洛杉矶”,......},{...},{...}]}“。
任何人都可以了解一下(我认为)泽西岛可能无法在这里做什么,以及如何欺骗它呢?
非常感谢,
Russ Bateman
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!
}
答案 0 :(得分:0)
@XmlRootElement
public class Account
{
ObjectId oid;
String name;
String email;
...
@XmlElement <------ don't forget this annotation!
ArrayList< Address > addresses;
}
希望这有助于像我这样的其他可怜的笨蛋。