Java 序列化时间戳转换为秒
我正在尝试将时间戳对象序列化为JSON。但是JSON中的对象显示为秒 这是我的POJO的一个片段:Java 序列化时间戳转换为秒,java,json,jackson,timestamp,Java,Json,Jackson,Timestamp,我正在尝试将时间戳对象序列化为JSON。但是JSON中的对象显示为秒 这是我的POJO的一个片段: @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) public class TimeAndDateDetail{ @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh.mm.ss") private Timestamp time
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public class TimeAndDateDetail{
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh.mm.ss")
private Timestamp timeAndDate;
public Timestame getTimeAndDate() {return timeAndDate; }
public void setTimeAndDate(Timestamp timeAndDate){
this.timeAndDate = timeAndDate;
}
}
这是我的输出:
{
"timeAndDate": 1583038800000
}
为什么会这样?我怎样才能让它保持原来的格式呢 您可以使用@JsonFormat注释该字段,以指定时间戳将被序列化的格式。以下是一个例子:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
看起来您正在使用jackson,这是它的默认行为。 最好的方法是禁用相关的对象映射器功能:
objectMapper
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
什么是“原始格式”?java.sql.Timestamp实际上没有格式,除非您指的是它的toString实现,它是相对于您机器上的JVM默认时区的。yyyy-MM-dd hh:MM:ss是序列化之前的原始格式。它与Timestamp一起工作吗?还是我必须使用日期?当我尝试这个解决方案时,仍然会遇到同样的问题。@Brodiman事实上我已经找到了这个答案,这建议我对时间戳做同样的操作:我不确定我做错了什么:我添加了你的示例,但仍然得到了错误的输出。@Andronics编辑过。我是将这一行添加到我的主类还是POJO中?编译器正在抱怨无法解决此问题。您正在使用jackson吗?如果是,您应该在创建对象映射器的任何位置添加这一行。例如,如果您使用的是spring,请检查此答案以了解如何注入对象映射器:我不是在创建对象映射器。我正在使用products注释并让系统处理它。我还能把这句话放在什么地方吗?你的框架是什么?这个问题是否相关: