Jackson Scala JSON Deserialización a clases de casos
Tengo un JSON que tiene la siguiente forma:
{
"inventory": [
{
"productType": "someProduct1",
"details": {
"productId": "Some_id",
"description": "some description"
}
},
{
"productType": "someProduct2",
"details": {
"productId": "Some_id",
"description":{"someKey":"somevalue"}
}
}
]
}
Las clases de casos que deseo que el json anterior deserialice se parecen a las siguientes:
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
estoy usandomódulo jackson-scala para deserializar la cadena JSON anterior de la siguiente manera:
val mapper = new ObjectMapper() with ScalaObjectMapper
mapper.registerModule(DefaultScalaModule)
mapper.readValue(jsonBody, classOf[Inventory])
El error que recibo es el siguiente: "Token inesperado (END_OBJECT), FIELD_NAME esperado: falta la propiedad '@details' que debe contener el ID de tipo (para la clase ProductDetails) \ n en [Source: java.io.StringReader@12dfbabd; line : 9, columna: 5] "
He pasado porDocumentación de jackson sobre deserialización polimórfica. Y he intentado combinaciones como las mencionadas pero sin suerte. Me gustaría entender lo que estoy haciendo mal aquí, que necesita corrección con respecto a la deserialización utilizando el módulo jackson.