第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Boot,在 REST 響應中將日期時間精度定義為毫秒

Spring Boot,在 REST 響應中將日期時間精度定義為毫秒

有只小跳蛙 2023-09-13 16:59:03
我創(chuàng)建了一個提供 REST API 的 Spring Web 應用程序。我正在使用 Spring Boot 2.x、Spring Data REST、Spring HATEOAS、Spring JPA、Hibernate 5.3、Mysql。我也在使用 jackson-datatype-jsr310。我在整個應用程序中使用 UTC 日期,并將 UTC 日期存儲在 Mysql 中。在我的豆日期中定義為:    @NotNull    @Column(nullable = false)    private Instant validUntil;一切正常,但是當 API 被使用時,日期會以這種格式返回:"validUntil" : "2019-11-05T22:59:59.999999Z"我想將應用程序中的每個日期時間截斷為毫秒,因此日期應該是:“有效直到”:“2019-11-05T22:59:59.999Z”在我的 @Configuration 中,我使用自定義 JacksonModule:    @Bean    public Module customJacksonModule() {        SimpleModule customJacksonModule = new SimpleModule();        customJacksonModule.addSerializer(ConstraintViolationException.class, constraintViolationExceptionSerializer());        customJacksonModule.addSerializer(ValidationException.class, validationExceptionSerializer());        customJacksonModule.addSerializer(cloud.optix.server.exceptions.ValidationException.class, customValidationExceptionSerializer());          return customJacksonModule;    }我嘗試了幾種方法,但到目前為止沒有一個有效:1. Application.properties我放入spring.jackson.serialization.write-date-timestamps-as-nanoseconds = false我的 application.propreties2. 自定義對象映射器我嘗試更改 objectMapper 的設置。@Autowired(required = true)public void configureJackson(ObjectMapper jackson2ObjectMapper) {    jackson2ObjectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);    jackson2ObjectMapper.configure(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS, false);}3.刪除@EnableHypermediaSupport@EnableHypermediaSupport(type = {EnableHypermediaSupport.HypermediaType.HAL})所有這些操作都沒有改變將日期返回給客戶端的方式。我想要一些建議來理解/調(diào)試為什么日期沒有以正確的格式返回。作為補充說明,我發(fā)現(xiàn)在com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializerBaseserialize() 方法中我既沒有useNanosecondsproperty ,也沒有 default formatter。但是 application.properties 中的屬性spring.jackson.serialization.write-dates-as-timestamps會影響日期格式。
查看完整描述

3 回答

?
呼如林

TA貢獻1798條經(jīng)驗 獲得超3個贊

您可以將 ObjectMapper 配置為在應用程序中使用特定的日期格式:

jackson2ObjectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz"));



查看完整回答
反對 回復 2023-09-13
?
四季花海

TA貢獻1811條經(jīng)驗 獲得超5個贊

你需要替換InstantSerializer杰克遜正在使用的東西。


@Configuration

public class JacksonConfig {


    @Bean

    public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {

        return builder -> builder.serializers(new CustomInstantSerializer());

    }


    private static class CustomInstantSerializer extends InstantSerializer {


        private static final DateTimeFormatter UTC_DATE_FORMAT = DateTimeFormatter

                .ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").withZone(ZoneOffset.UTC);


        private CustomInstantSerializer() {

            super(InstantSerializer.INSTANCE, null, UTC_DATE_FORMAT);

        }


    }


}

例如,您可以將JacksonConfig類放入項目的包中。config


另外,如果不起作用,請檢查 SpringBoot 是否真的可以找到它。在默認構(gòu)造函數(shù)中設置斷點InstantSerializer或在其中添加臨時日志記錄。


查看完整回答
反對 回復 2023-09-13
?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

您是否嘗試過像下面這樣注釋 validUntil 字段@JsonFormat。


@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")

@NotNull

@Column(nullable = false)

private Instant validUntil;


查看完整回答
反對 回復 2023-09-13
  • 3 回答
  • 0 關注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號