我试图在springmvc中获取一个方法来接受一个对象的部分json字符串,并让jackson自动为它反序列化它。 我可以通过创建一个只有我想要的属性的临时对象来解决它,或者将它作为一个字符串传递给我并使用Gson对我进行desearialize,但是这些感觉很糟糕。有没有办法告诉杰克逊怎么做?
以下是控制器代码段:
@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
}
如果你不能通过我的其他春天相关的问题告诉我,我有点盲目,并且无法弄清楚这个问题的正确的谷歌查询。
谢谢!
答案 0 :(得分:0)
您需要在方法(用于反序列化的setter和用于序列化的getter)或字段上使用jackson的@JsonIgnore
注释,您要忽略序列化和/或反序列化。例如
在您的示例中,如果您不想序列化description
,那么您可以这样做,
@JsonIgnore
public void setDescription(String description) {
this.description = description;
}
您会看到,在转换后的模型中,您将无法获得description
的价值。