繁体   English   中英

将java.sql.timestamp转换为Json格式

[英]Converting java.sql.timestamp to Json format

我有一个private java.sql.Timestamp myDate;
在某些模型(POJO)中。 是否可以将其(通过杰克逊)转换为类似的内容:
Wed, 23 Nov 2016 20:37:09 GMT

我知道我可能会使用@JsonProperty类的@JsonProperty ,但是我无法处理这种格式。 此外,请记住,我不仅发送JSON,而且还接收相同的JSON。
预先感谢!

您可以为时间戳字段添加自定义序列化程序。

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映射器=新的ObjectMapper();
mapper.writeValueAsString(//您的对象在这里//);

您将获得如下内容:

{"timestamp":"Tue, 6 Dec 2016 19:06:33 IST"}

它将将此反序列化的JSON反序列化回POJO中的timestamp字段。

@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或更高版本

使用以下格式转换时间戳

SimpleDateFormat sdf = new SimpleDateFormat(“ E,dd MMM yyyy HH:mm:ss z”);

示例代码将是:

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

暂无
暂无

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

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