[英]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;
}
有关更多信息,请阅读以下链接:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.