ヴャチェスラフChernyshov:
私は、文字列としてのシリアル化/デシリアライズLOCALDATE / LocalDateTimeをJavaの11使用したいです。はい。私は、依存関係を追加しました:
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
モジュール:
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper()
.registerModule(new JavaTimeModule())
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
}
私は私のアプリに日付を送信すると、それは正しくデシリアライズ:
{"profileId":12608,"birthDate":"2008-03-20","relativeType":"SON","cohabitants":true}
私は豆としてobjectMapper使用する場合は、直接、それはあまりにも正しくシリアライズ:
{"code":"SUCCESS","id":868,"profileId":12608,"birthDate":"2008-03-20","relativeType":"SON","cohabitants":true}
それはコントローラとシリアル化するときには、それが配列としてシリアライズ:
{"code":"SUCCESS","id":868,"profileId":12608,"birthDate":[2008,3,20],"relativeType":"SON","cohabitants":true}
問題は、コントローラ上の身体に日付をデシリアライズすることです。コントローラは、次のとおりです。
@PostMapping
public Relative create(@Validated(Validation.Create.class) @RequestBody Relative relative) {
return service.create(relative);
}
Relative.class:
@Getter
@Setter
@ToString(callSuper = true)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Relative extends MortgageResponse {
@Null(groups = Validation.Create.class)
@NotNull(groups = Validation.Update.class)
private Long id;
@NotNull
private Long profileId;
private LocalDate birthDate;
private RelativeType relativeType;
private Boolean cohabitants;
}
、アドバイスくれ、問題とどのようにそれを修正するものですしてください。
マルコBehler:
追加@JsonFormatアノテーションをあなたたbirthDateフィールドに、あるいはむしろ、任意の日付フィールドとあなたのObjectMapper(春ブーツかどうかは)限り、あなたはあなたのクラスパスに追加js310依存性を持っているように、書式設定を尊重しなければなりません。
@JsonFormat(pattern="yyyy-MM-dd")
private LocalDate birthDate;