我想在springmvc中接受一個對象的部分json字符串的方法,並讓傑克遜自動爲我解序列化它。 我可以通過僅使用我想要的屬性創建一個臨時對象來解決這個問題,或者將它作爲一個字符串傳遞並使用Gson爲我設置desearialize,但這些感覺很不好。有什麼辦法可以告訴傑克遜如何做到這一點?部分反序列化一個json對象在平靜的郵政調用
這裏是控制器片段:
@RequestMapping(value = "/task",
method = RequestMethod.POST,
consumes="application/json")
public @ResponseBody String postTask(@RequestBody Task task){
if(task.getId() == null){
task.setId(UUID.randomUUID());
}
if(task.getDate_entered() == 0){
task.setDate_entered(System.currentTimeMillis());
}
TaskDao.addTask(task);
return "success";
}
,任務,基本POJO:
@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
public class Task {
private UUID id;
private String name;
private String description;
private long date_entered;
private long finish_by;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
// Rest of the getters and setters
}
如果無法通過我的其他春天相關的問題告訴,我有點飛行盲目,並不能找出適合這一個的谷歌查詢。
謝謝!
根據傑克遜文檔,這種行爲應該是標準的。即如果沒有值的屬性它的setter不被調用,但對象仍然被創建。見http://jackson-users.ning.com/forum/topics/what-happens-if-a-property-is-missing – Andrew
哦,不!如果是這種情況,那麼我要麼使用舊版本,要麼讓它設置錯誤。我會盡力確認兩者。謝謝 – Chris
@Awalsh:今天早上aannnddd它按預期工作......不完全確定我之前更改了啓用/禁用它的功能。 我會嘗試找出更改的內容並將其作爲答案。 – Chris