阿帕奇骆驼和杰克逊

Kev*_*vin 7 java json apache-camel jackson

我正在尝试apache-camel,我已经设置了一个基本路由,通过http4组件调用http服务,通过unmarshal().json(JsonLibrary.Jackson)转换结果,然后打印出部分响应在bean组件中.

我遇到的问题是,当它到达json unmarhsaller时它会在运行时爆炸:

没有类型转换器可用于从类型:java.util.HashMap转换为所需类型:com.xxx.MyType

响应采用以下格式:

{"data":[{"x":"y"},{"x":"z"}]}
Run Code Online (Sandbox Code Playgroud)

我的对象模型如下:

@lombok.Data
class Response {
    private List<Elem> data;
}

@lombok.Data 
class Elem {
    private String x;
}
Run Code Online (Sandbox Code Playgroud)

所以看起来unmarshaller认为响应是一个哈希映射,而我希望它解组成一个对象结构.有没有办法让它做我想要的?

Kev*_*vin 12

找到答案,发布以防万一其他人遇到此问题.路径构建器应设置为:

from("direct:start").to("http4://...").unmarshal().json(JsonLibrary.Jackson,com.xxx.Response)
.to("bean:com.xxx.MyResponseEchoer")
Run Code Online (Sandbox Code Playgroud)

即将类类型传递给j​​son方法.