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

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

Spring Boot 無法反序列化包含 OffsetDateTime 的對象

Spring Boot 無法反序列化包含 OffsetDateTime 的對象

慕工程0101907 2023-09-27 15:20:02
我正在嘗試調用一個休息端點,它返回一個 pojo 對象,如下所示:public class Process   {  @JsonProperty("id")  private String id = null;  @JsonProperty("processDefinitionId")  private String processDefinitionId = null;  @JsonProperty("businessKey")  private String businessKey = null;  @JsonProperty("startedAt")  private OffsetDateTime startedAt = null;  @JsonProperty("endedAt")  private OffsetDateTime endedAt = null;  @JsonProperty("durationInMs")  private Integer durationInMs = null;  @JsonProperty("startActivityDefinitionId")  private String startActivityDefinitionId = null;  @JsonProperty("endActivityDefinitionId")  private String endActivityDefinitionId = null;  @JsonProperty("startUserId")  private String startUserId = null;  @JsonProperty("deleteReason")  private String deleteReason = null;  //constructors and setters+getters}這是調用:ResponseEntity<Process> responseModel = restTemplate.exchange("http://localhost:8062/processes", HttpMethod.POST, httpEntity, Process.class);問題是我嘗試了一些方法,例如忽略 OffsetDateTime 屬性或嘗試更改該日期的格式,但它會拋出此錯誤:com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.threeten.bp.OffsetDateTime` (no Creators, like default construct, exist): no String-argument constructor/factory method to deserialize from String value ('2019-10-04T13:20:29.315Z')或者它將返回 null :( 解決這個問題的好解決方案是什么?
查看完整描述

2 回答

?
天涯盡頭無女友

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

該錯誤表明它無法構造 org. Threeten.bp.OffsetDateTime 的實例。你需要使用


java.time.offsetdatetime

然后在你的模型中你可以按照你喜歡的方式格式化它,例如


@JsonProperty("endedAt") //this line is not needed when it is the same as the instance variable name

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

private OffsetDateTime endedAt;


查看完整回答
反對 回復 2023-09-27
?
守著星空守著你

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

我對 swagger 生成的 bean 也有同樣的問題。為了解決這個問題,我為日期類型創(chuàng)建了一些序列化器和反序列化器:org. Threeten.bp.LocalDate 和 org. Threeten.bp.OffsetDateTime。而且效果很好:)。


@Bean

@Primary

public ObjectMapper serializingObjectMapper() {

    ObjectMapper objectMapper = new ObjectMapper();

    JavaTimeModule javaTimeModule = new JavaTimeModule();

    javaTimeModule.addSerializer(OffsetDateTime.class, new OffsetDateTimeSerializer());

    javaTimeModule.addDeserializer(OffsetDateTime.class, new OffsetDateTimeDeserializer());

    javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer());

    javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer());

    objectMapper.registerModule(javaTimeModule);

    return objectMapper;

}


public static class OffsetDateTimeSerializer extends JsonSerializer<OffsetDateTime> {

    @Override

    public void serialize(OffsetDateTime arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException {

        arg1.writeString(arg0.toString());

    }

}


public static class OffsetDateTimeDeserializer extends JsonDeserializer<OffsetDateTime> {

    @Override

    public OffsetDateTime deserialize(JsonParser arg0, DeserializationContext arg1) throws IOException {

        return OffsetDateTime.parse(arg0.getText());

    }

}


public static class LocalDateSerializer extends JsonSerializer<LocalDate> {

    @Override

    public void serialize(LocalDate arg0, JsonGenerator arg1, SerializerProvider arg2) throws IOException {

        arg1.writeString(arg0.toString());

    }

}


public static class LocalDateDeserializer extends JsonDeserializer<LocalDate> {

    @Override

    public LocalDate deserialize(JsonParser arg0, DeserializationContext arg1) throws IOException {

        return LocalDate.parse(arg0.getText());

    }

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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