private java.sql.Timestamp myDate;
Wed, 23 Nov 2016 20:37:09 GMT
@JsonProperty
这样的东西,但是我不能处理这个格式。此外,请记住,我不仅发送JSON,还收到相同的JSON
提前谢谢!
答案 0 :(得分:3)
您可以为时间戳字段添加自定义序列化程序。
public class JsonDateSerializer extends JsonSerializer<Timestamp> {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z");
@Override
public void serialize(Timestamp arg0, JsonGenerator arg1, SerializerProvider arg2)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(arg0);
arg1.writeString(formattedDate);
}
}
在POJO中添加@JsonSerialize变量,
@JsonSerialize(using = JsonDateSerializer.class)
public Timestamp timestamp;
之后你按照这样序列化它:
ObjectMapper mapper = new ObjectMapper();
mapper.writeValueAsString(//你的对象在这里//);
你会得到这样的东西:
{"timestamp":"Tue, 6 Dec 2016 19:06:33 IST"}
它会将此传递的JSON反序列化到POJO中的时间戳字段。
答案 1 :(得分:1)
@JsonFormat注释如下,可用于POJO java.sql.Timestamp成员:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "E, dd MMM yyyy HH:mm:ss z", timezone = "GMT+2")
对于MySQL TIMESTAMP记录:
2018-04-30 14:10:13
输出是:
Mon, 30 Apr 2018 14:10:13 GMT+02:00
注意:这适用于Jackson 2.0或更新版
答案 2 :(得分:-1)
使用以下格式转换时间戳
SimpleDateFormat sdf = new SimpleDateFormat(&#34; E,dd MMM yyyy HH:mm:ss z&#34;);
示例代码为:
Timestamp ts = new Timestamp(new Date().getTime());
System.out.println(ts);
SimpleDateFormat sdf = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
System.out.println(sdf.format(ts));
将打印出来
2016-11-23 15:55:22.291
Wed, 23 Nov 2016 15:55:22 EST