Jackson Scala JSON Deserializacja do klas przypadków
Mam JSON, który ma następującą postać:
{
"inventory": [
{
"productType": "someProduct1",
"details": {
"productId": "Some_id",
"description": "some description"
}
},
{
"productType": "someProduct2",
"details": {
"productId": "Some_id",
"description":{"someKey":"somevalue"}
}
}
]
}
Klasy przypadków, które chcę, aby powyższy json deserializował, wyglądają następująco:
case class Inventory(products:List[Product])
case class Product(productType:String,details:ProductDetails)
abstract class ProductDetails
case class ProductDetailsSimple(productId:String,description:String) extends ProductDetails
case class ProductDetailsComplex(productId:String,description:Map[String,String]) extends ProductDetails
ja używammoduł jackson-scala aby deserializować powyższy ciąg JSON w następujący sposób:
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
mapper.readValue(jsonBody, classOf[Inventory])
Błąd, jaki otrzymuję, jest następujący: „Nieoczekiwany token (END_OBJECT), oczekiwany NAZWA_PLIKU: brakująca właściwość„ @details ”, która ma zawierać id typu (dla klasy ProductDetails) n w [Źródło: java.io.StringReader@12dfbabd; linia : 9, kolumna: 5] ”
przeszedłem przezdokumentacja jacksona dotycząca deserializacji polimorficznej i próbowałem kombinacji, jak wspomniano, ale bez powodzenia. Chciałbym zrozumieć, co robię źle tutaj, co wymaga korekty w odniesieniu do deserializacji za pomocą modułu jackson.