Java 日期类型在postman 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切换为,并使用如下所示

//JSON响应

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"}