当前位置: 首页 > 知识库问答 >
问题:

InvalidDefinitionException with

栾弘新
2023-03-14

项目在Maven中有spring-boot-starter-web starter。

我在项目中看到了这些问题

jackson datatype-jdk 8-2.10.1 jackson-datatype-jsr310-2.10.1

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class BillingEvent {
    public Long Id;
    public LocalDate billingCreatedDate;
}

InvalidDefinitionException:无法构造java.time.localdate的实例(没有创建者,如默认构造,存在):没有字符串参数构造函数/工厂方法可以从字符串值反序列化('2019-09-02')

共有1个答案

子车凌龙
2023-03-14

对我来说,在BillingEvent中添加setter就足够了,比如:

public void setBillingCreatedDate(String str) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");        
    billingCreatedDate = LocalDate.parse(str, formatter);
}

有关格式化的更多信息,请参见:String to LocalDate

根据评论:

public class LocalDateDeserializer extends JsonDeserializer<LocalDate> {

    private final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

    @Override
    public LocalDate deserialize(JsonParser p, DeserializationContext ctxt)
            throws IOException, JsonProcessingException {        
          return LocalDate.parse(p.readValueAs(String.class), formatter);
    }

}
@JsonDeserialize(using = LocalDateDeserializer.class)
public LocalDate billingCreatedDate;
 类似资料:

相关问答

相关文章

相关阅读