我有一個基於Jersey的(JAX-RS)Web服務,它比其他任何事情都更接口數據庫。 帳戶是含有,所有其他種類的明顯的東西之間的對象,的地址嵌入式陣列(也標有@XmlRootElement):如何欺騙Jersey返回嵌入式數組?
@XmlRootElement
public class Account
{
ObjectId oid;
String name;
String email;
...
ArrayList<Address> addresses;
}
@XmlRootElement
public class Address
{
String street;
String city;
...
}
在讀取操作中,我從數據庫獲取一個內部地址填寫的帳戶(如在Eclipse中檢查)。當我將它們傳回給我的來電時(請參閱下面的ReST服務代碼),所有帳戶字段顯示,但不是的地址。爲了使請求,並看到這樣的結果,我使用的是簡單的REST客戶擴展到Chrome瀏覽器:
{
"oid":"4fe252a73cc58a6da34eb11f",
"name":"Yosemite Sam",
"email":"[email protected]"
(but no addresses)
}
我預計澤西島返回類似「{‘OID’:」 ......」,「名稱「:」優勝美地山姆「,」電子郵件「:」[email protected]「,」地址「:[{」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!
}