java - marshall - camello apache y jackson
camel unmarshal json to pojo (1)
Estoy probando apache-camel, y he configurado una ruta básica que llama a un servicio http a través del componente http4, transforma el resultado a través de unmarshal (). Json (JsonLibrary.Jackson), y luego imprime parte de la respuesta en un componente de frijol
El problema que tengo es que explota en tiempo de ejecución cuando llega al json unmarhsaller:
No hay convertidor de tipos disponible para convertir de tipo: java.util.HashMap al tipo requerido: com.xxx.MyType
La respuesta es de este formato:
{"data":[{"x":"y"},{"x":"z"}]}
Y mi modelo de objetos es como:
@lombok.Data
class Response {
private List<Elem> data;
}
@lombok.Data
class Elem {
private String x;
}
Entonces, parece que el unmarshaller cree que la respuesta es un mapa hash, mientras que yo quiero que se desmarque en una estructura de objeto. ¿Hay alguna manera de hacer que haga lo que yo quiero?
Encontré la respuesta, publicando en caso de que alguien más se encuentre con esto. El generador de rutas debe configurarse como:
from("direct:start").to("http4://...").unmarshal().json(JsonLibrary.Jackson,com.xxx.Response)
.to("bean:com.xxx.MyResponseEchoer")
Es decir, pasar el tipo de clase al método json.