Java 日期类型在postman JSON响应中转换为时间戳,如何避免这种情况?
//JSON响应Java 日期类型在postman JSON响应中转换为时间戳,如何避免这种情况?,java,json,date,datetime,datetime-format,Java,Json,Date,Datetime,Datetime Format,//JSON响应 Java.util.Date startDate : 2020-07-13 09:00:00.0 我想在JSON中显示为2020-07-13 09:00:00.0如果您提到您的变量startDate是日期类型,现在我不知道您使用的是什么语言,但我可以尝试一个有根据的猜测您需要做什么: 格式化日期类型以获得字符串类型,并将该字符串放入JSON中。作为字符串而不是时间戳的解释,不应转换为。我建议您从过时且容易出错的java.utildate-time API切换为,并使用如下所示
Java.util.Date
startDate : 2020-07-13 09:00:00.0
我想在JSON中显示为2020-07-13 09:00:00.0如果您提到您的变量startDate是日期类型,现在我不知道您使用的是什么语言,但我可以尝试一个有根据的猜测您需要做什么:
格式化日期类型以获得字符串类型,并将该字符串放入JSON中。作为字符串而不是时间戳的解释,不应转换为。我建议您从过时且容易出错的
java.util
date-time API切换为,并使用如下所示的格式设置给定的日期时间:
"startDate" : 1594611000000
输出:
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// Define format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.S");
// Get Instant from the time-stamp of 1594611000000
Instant instant = Instant.ofEpochMilli(1594611000000L);
// Get OffsetDateTime from instant
OffsetDateTime odt = instant.atOffset(ZoneOffset.ofHoursMinutes(5, 30));
// Get LocalDateTime from odt
LocalDateTime ldt = odt.toLocalDateTime();
// Get string in the defined format
String dateTimeStr = formatter.format(ldt);
// Display the formatted ldt
System.out.println(dateTimeStr);
}
}
注意:LocalDateTime
删除时区和时区偏移的重要信息。根据您的要求,从以下给定的日期时间对象中选择正确的日期时间对象:
如果用于序列化/反序列化的POJO对象有一个日期字段,如下图所示,则应通知用于序列化/反序列化的库(例如Jackson)
2020-07-13 09:00:00.0
执行序列化/反序列化时,将使用序列化程序/反序列化程序设置数据格式的详细信息。使用Jackson(使用com.fasterxml.Jackson.core)的反序列化代码示例可以
输出将按如下方式打印:
public static void main(String[] args) throws JsonProcessingException, ParseException
{
//2020-07-13 09:00:00.0
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
String dateString = format.format( new Date() );
Date date = format.parse ( "2020-07-13 09:00:00.0" );
JsonTest jsonTest = new JsonTest();
jsonTest.setDate(date);
ObjectMapper mapper = new ObjectMapper();
//mapper should know that the specific format is needed while conversion
mapper.setDateFormat(format);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
System.out.println(mapper.writeValueAsString(jsonTest));
}
您的代码会很有帮助:)您需要配置序列化库(在应用程序服务器中)。您如何生成JSON?您使用的是什么库和配置?我建议您从过时且容易出错的
java.util
date-time API切换到并使用指定的日期时间格式,而不是使用SimpleDateFormat
。
public static void main(String[] args) throws JsonProcessingException, ParseException
{
//2020-07-13 09:00:00.0
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
String dateString = format.format( new Date() );
Date date = format.parse ( "2020-07-13 09:00:00.0" );
JsonTest jsonTest = new JsonTest();
jsonTest.setDate(date);
ObjectMapper mapper = new ObjectMapper();
//mapper should know that the specific format is needed while conversion
mapper.setDateFormat(format);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
System.out.println(mapper.writeValueAsString(jsonTest));
}
{"date":"2020-07-13 09:00:00.0"}