Apache Camel和Jackson

7
我正在尝试使用apache-camel,并设置了一个基本路由,通过http4组件调用http服务,通过unmarshal().json(JsonLibrary.Jackson)转换结果,然后在bean组件中打印出部分响应。但我遇到的问题是,在运行时它会在json unmarhsaller处崩溃:
“没有可用的类型转换器将类型java.util.HashMap转换为所需类型com.xxx.MyType。”
响应的格式如下:
{"data":[{"x":"y"},{"x":"z"}]}

我的对象模型如下:

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

@lombok.Data 
class Elem {
    private String x;
}

看起来,Unmarshaller认为响应是一个哈希映射,而我想要将其解组成对象结构。有没有办法让它按照我的意愿进行解组?

1个回答

12

找到答案了,发一下以供有需要的人参考。路由构建器应该设置如下:

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

即通过将类类型传递给json方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接