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

将java.sql.timestamp转换为Json格式,java,sql,json,jackson,Java,Sql,Json,Jackson,我有一个 private java.sql.Timestamp myDate 在某些模型(POJO)类中。有没有可能把它(由杰克逊)转换成这样的东西: 2016年11月23日星期三20:37:09 GMT ? 我知道我可能会使用类似于@JsonProperty的东西,但是我不能处理这个东西的格式。此外,请记住,我不仅发送JSON,还接收相同的JSON。 提前感谢 使用以下格式转换时间戳 SimpleDataFormat sdf=新的SimpleDataFormat(“E,dd-MMM-yyyy-

我有一个
private java.sql.Timestamp myDate
在某些模型(POJO)类中。有没有可能把它(由杰克逊)转换成这样的东西:
2016年11月23日星期三20:37:09 GMT


我知道我可能会使用类似于
@JsonProperty
的东西,但是我不能处理这个东西的格式。此外,请记住,我不仅发送JSON,还接收相同的JSON。

提前感谢

使用以下格式转换时间戳

SimpleDataFormat sdf=新的SimpleDataFormat(“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

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

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);

    }

}
之后,当您像这样序列化它时:
ObjectMapper mapper=新的ObjectMapper()
writeValueAsString(//此处的对象//)

你会得到这样的结果:

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

它会将传递的JSON反序列化回POJO中的时间戳字段。

@JsonFormat注释如下,可用于POJO java.sql.timestamp成员:

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "E, dd MMM yyyy HH:mm:ss z", timezone = "GMT+2")

对于MySQL时间戳记录:

2018-04-30 14:10:13
输出为:

Mon, 30 Apr 2018 14:10:13 GMT+02:00


注意:这适用于Jackson 2.0或更新版本

基本上,您希望将java时间戳转换为格式化字符串,该字符串作为json属性之一的值。对吗?你试过格式化日期对象吗???问题是我使用了spring的自动机制,比如ResponseBody(jackson和其他类似的故事),即使你使用spring请求体,你仍然可以提取日期、格式化并将其设置回原位。你能更准确地说吗?在格式化后将其设置回sq时间戳类型?似乎很难
Mon, 30 Apr 2018 14:10:13 GMT+02:00