繁体   English   中英

Jackson JSON日期反序列化到时间戳

[英]Jackson JSON Date Deserialization to Timestamp

我正在尝试使用Jackson2的REST方法将JSON映射到POJO。 我的POJO中的DueDate属性的类型为java.util.date。 我读到Jackson会默认将JSON反序列化为时间戳。 我只想要这种行为。 但是,在我的案例中,杰克逊将DueDate属性转换为Date。

谁能帮助我,让Jackson将序列化DueDate作为时间戳

JSON在这里...

{“ atr1”:null,“ atr2”:null,“ dueDate”:“ 2018-07-11”}

POJO在这里..

public class Sample {
    private String atr1;
    private String atr1;
    private Date dueDate;
}

REST Api ...

    public Response create(String json) {                                        
            ObjectMapper mapper = new ObjectMapper();
            Sample sample1 = mapper.readValue(json,Sample.class);
 }

谢谢

更多详细信息...从实际的UI对象调用方法时,DueDate的值类型为Timestamp

宾语 在此处输入图片说明

但是,当将JSON传递给REST进行方法调用时,类型将更改为Date 在此处输入图片说明

我希望它是时间戳类型。 因此,使用DueDate作为参数的SQL查询无法正确获取值。

您可以在pojo中使用java.sql.timestamp而不是java.util.Date

import java.sql.Timestamp;

public class sample {
    private String atr1;
    private String atr2;
    private Timestamp dueDate;
}

您可以像上面一样访问日期时间戳。 我还制作了如下代码段进行确认。

 public static void main( String[] args ) throws JsonParseException, JsonMappingException, IOException
    {
        String json = "{ \"atr1\": null, \"atr2\": null, \"dueDate\": \"2018-07-11\" }";
        ObjectMapper mapper = new ObjectMapper();
        sample sample1 = mapper.readValue(json, sample.class);
        System.out.println(sample1.getDueDate());
    }

以上输出: 2018-07-11 05:30:00.0

您可以使用@JsonFormat更改json日期模式,如下所示:

public class Sample {
    private String atr1;
    private String atr1;
    @JsonFormat(shape = JsonFormat.Shape.NUMBER)
    private Date dueDate;
}

有关更多信息,请阅读以下链接:

https://www.baeldung.com/jackson-jsonformat

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM