我使用Jersey 2.22.1和MOXY作爲Json提供程序來實現RESTFul Web服務。JSON解組使用JAX-RS和MOXy
例如我有以下實體用戶:
public class User {
private String id;
private String email;
private Address address;
private List<Phone> phones;
// getters & setters
}
和其他類
public class Address {
private String type;
private String value;
// getters & setters
}
public class Phone {
private String type;
private String value;
// getters & setters
}
這是我的JAX-RS資源實現:
@POST
public Response create(User user) {
// some logic
}
現在,當我m發送包含以下json數據的POST請求:
{
"id":"qwe12",
"email":"[email protected]",
"address":{
"type":"1WHEN-Honorable",
"value":"1WHEN-M"
},
"phones":[
{
"type":"HOME",
"number":"034-2342-12-31"
},
{
"type":"WORK",
"number":"31-21-3211-32"
}
]
}
它完美的作品,MOXY自動映射此JSON用戶對象和它的罰款
但我需要處理JSON築巢的另一個層面,是這樣的:
{
"user":{
"id":"qwe12",
"email":"[email protected]",
"address":{
"type":"1WHEN-Honorable",
"value":"1WHEN-M"
},
"phones":[
{
"type":"HOME",
"number":"034-2342-12-31"
},
{
"type":"WORK",
"number":"31-21-3211-32"
}
]
}
}
,你可以看到另一個關鍵字叫做用戶,我知道這不是一個好的json結構,但這是一個需求,我必須接受它。現在我需要能夠處理它。現在我只能看到一個解決方案。
我可以添加另一個類包裝aroung用戶並將其傳遞給創建方法。
所以它看起來這樣:
JAX-RS資源:
@POST
public Response create(UserWrapper user) {
// some logic
}
和Java類:
public class UserWrapper {
private User user;
// getters & setters
}
它的工作解決方案,但我真的不喜歡它,因爲我需要添加一個額外的類。想在這裏你的建議如何保持我的Java類,因爲它是,並能夠接受多層次的嵌套(我的意思是這個用戶密鑰)的JSON。
在此先感謝!