Java json response показывает дату в числовом значении - PullRequest
0 голосов
/ 24 октября 2018
@Data
public class Reponse {

    private String event;

    @Temporal(TemporalType.TIMESTAMP)
    private Date eventDate;

    private Double amount;
}

Json-ответ похож на

{ 
  event: "transcation',
  eventDate: 1213123434,
  amount: 100
}

Здесь eventDate показывает числовое значение 1540317600000 вместо 2018-10-23

Ответы [ 4 ]

0 голосов
/ 15 мая 2019

spring 2.x перевернул настройки конфигурации Джексона по умолчанию для записи дат JSR-310 в виде строк ISO-8601.Если вы хотите вернуться к предыдущему поведению, вы можете добавить

spring.jackson.serialization.write-dates-as-timestamps=true 

в файл конфигурации вашего приложения.

0 голосов
/ 24 октября 2018

Если вы используете Spring boot 2.x вместо 1.x, поведение по умолчанию изменилось
добавьте spring.jackson.serialization.write-dates-as-timestamps=true в вашу конфигурацию, чтобы вернуться к предыдущему поведению
Руководство по миграции Spring Boot 2.0

0 голосов
/ 05 ноября 2018

Вы можете пометить поле с помощью @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm").Тогда время отклика будет выглядеть как "yyyy-MM-dd HH:mm"

import com.fasterxml.jackson.annotation.JsonFormat;


public class Reponse {

    private String event;

    @Temporal(TemporalType.TIMESTAMP)
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
    private Date eventDate;

    private Double amount;
}
0 голосов
/ 24 октября 2018
I suppose you are using rest framework such as spring boot or jersey which in turn 
converts your java date into epoch format before sending it to the client. So while 
sending response you can format you date into the format you want. Please refer 
the code below.

import java.text.SimpleDateFormat;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
sdf.setLenient(false);
String responseDate = sdf.format(date);
...