Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在restful post调用中部分反序列化json对象_Java_Json_Spring_Spring Mvc_Jackson - Fatal编程技术网

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

Java 在restful post调用中部分反序列化json对象,java,json,spring,spring-mvc,jackson,Java,Json,Spring,Spring Mvc,Jackson,我试图在springmvc中获得一个方法来接受对象的部分json字符串,并让jackson为我自动反序列化它。 我可以通过创建一个只包含我想要的属性的临时对象来解决这个问题,或者将它作为字符串传递给我,然后使用Gson对其进行去序列化,但是这些都让我感觉很不舒服。有没有办法告诉杰克逊怎么做 以下是控制器代码段: @RequestMapping(value = "/task", method = RequestMethod.POST, consumes="application/

我试图在springmvc中获得一个方法来接受对象的部分json字符串,并让jackson为我自动反序列化它。 我可以通过创建一个只包含我想要的属性的临时对象来解决这个问题,或者将它作为字符串传递给我,然后使用Gson对其进行去序列化,但是这些都让我感觉很不舒服。有没有办法告诉杰克逊怎么做

以下是控制器代码段:

@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
}
如果你看不出我其他与spring相关的问题,那么我就有点盲目了,无法找到适合这个问题的google查询


谢谢

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

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

您将看到,在转换后的模型中,您不会得到
描述的值。

根据Jackson文档,这种行为应该是标准的。即,如果属性没有值,则不会调用其setter,但仍会创建对象。看,哦,不!如果是这样,那么我要么使用旧版本,要么设置错误。我会尽力证实这两个。Thanks@Awalsh:aannnddd今天早上它按预期工作。。。不完全确定我以前更改了什么来启用/禁用它。我会尝试找出是什么改变了,并把它作为一个答案。这允许选择什么将被反序列化的飞行?例如,您可以一次传入UUID,然后下一次传入名称?使用此配置,不会。因为我们在类定义本身中进行注释,我认为不可能动态更改类定义。