2017-12-05 2 views
2

Java 8時間APIクラスをどのように非直列化しますか?Spring Jackson java.timeデシリアライゼーション:引数が一致しない

import com.fasterxml.jackson.annotation.JsonFormat; 
import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 
import com.fasterxml.jackson.databind.annotation.JsonSerialize; 
import com.fasterxml.jackson.datatype.joda.deser.LocalDateDeserializer; 
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; 

public class TestRequest { 
    @JsonSerialize(using = LocalDateSerializer.class) 
    @JsonDeserialize(using = LocalDateDeserializer.class) 
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "YYYY-MM-dd") 
    LocalDate localDate; 
} 

春コントローラー:

public ResponseEntity test(@RequestBody TestRequest testRequest) { 
    return ResponseEntity.ok(testRequest); 
} 

JSONのリクエストボディにデシリアライズするcompile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")

リクエストボディ:

は、依存関係を含む:ここで

は、私がやったものです:

{ "localDate": "2017-11-01" } 

例外:

com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of TestRequest, problem: argument type mismatch

答えて

1

は、Java 8つのクラスをシリアル化または逆シリアル化する代わりに、ジャクソン・データ型 - jsr310のjackson-modules-java8を使用する必要があります。

関連する問題