我正在尝试使用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的值类型为时间戳
但是,当将JSON传递给REST进行方法调用时,类型将更改为日期。
我希望它是时间戳类型。因此,使用dueDate作为参数的SQL查询无法正确获取值。
答案 0 :(得分:1)
您可以在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
答案 1 :(得分:0)
您可以使用@JsonFormat更改json日期模式,如下所示:
public class Sample {
private String atr1;
private String atr1;
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private Date dueDate;
}
有关更多信息,请阅读以下链接: