Как я могу преобразовать дату в эпоху (метка времени Unix) в Spring boot2 с mongoDB? - PullRequest
0 голосов
/ 29 мая 2018

Я использую Spring boot 2 с mongoDB.В настоящее время, с сериализацией Джексона, Даты ответа API сериализуются в миллисекунды.

{

            "main_reg_dt": 1515485462433
}

После поиска в stackoverflow добавили эту опцию в конфигурацию приложения applcation.yaml к этому

WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS: true

но результат такой же, как и раньше.

это то, как реализована модель

@JsonInclude(JsonInclude.Include.NON_DEFAULT)
@QueryEntity
public class Card {

    @Id
    @JsonProperty("id")
    @Field("_id")
    String id;

    @JsonProperty("main_reg_dt")
    @Field("main_reg_dt")
    Date registeredDateTime;
}

Как я могу преобразовать дату в эпоху (метка времени unix) в Spring boot2 с помощью mongoDB

1 Ответ

0 голосов
/ 31 мая 2018

Я нашел способ изменить метод сериализации.

Сначала создайте собственный сериализатор

public class CustomDateSerializer extends JsonSerializer {
    @Override
    public void serialize(Object o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        long formattedDate = ((Date) o).getTime() / 1000;
        jsonGenerator.writeString(String.valueOf(formattedDate));
    }
}

Затем добавьте аннотацию для использования настроенного сериализатора

@JsonProperty("main_reg_dt")
@Field("main_reg_dt")
@JsonSerialize(using = CustomDateSerializer.class)
Date registeredDateTime;

Послеэта дата в ответе будет сериализована как метка времени Unix

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...