在restful post调用中部分反序列化json对象

时间:2012-06-23 02:08:29

标签: java json spring spring-mvc jackson

我试图在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
}

如果你不能通过我的其他春天相关的问题告诉我,我有点盲目,并且无法弄清楚这个问题的正确的谷歌查询。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要在方法(用于反序列化的setter和用于序列化的getter)或字段上使用jackson的@JsonIgnore注释,您要忽略序列化和/或反序列化。例如 在您的示例中,如果您不想序列化description,那么您可以这样做,

@JsonIgnore
public void setDescription(String description) {
        this.description = description;
 }

您会看到,在转换后的模型中,您将无法获得description的价值。