为了在流模式下读取json和unmarshal,Camel OOB中有哪些选项?如果没有开箱即可实现?
我找到了可能有帮助的camel-xstream。流模式是默认设置还是我们需要做其他事情才能使其以流模式读取?
还有杰克逊流媒体api。骆驼可以使用吗?
一些例子会有所帮助。 感谢
答案 0 :(得分:1)
您可以使用JSON data格式来与JSON编组和解组Java对象。
像.marshal().json(JsonLibrary.Jackson)
这样使用杰克逊图书馆的东西,你也可以使用其他东西。
以下是流式传输csv文件内容并转换为JSON然后调用MyBean类的publish方法的示例配置。
CsvDataFormat csv = new CsvDataFormat();
csv.setDelimiter(",");
csv.setQuoteDisabled(true);
csv.setUseMaps(true);
csv.setLazyLoad(true);
csv.setHeader(Arrays.asList("head1","head2","head3","message"));
from("file:///test/?fileName=test.csv&noop=true").split(body().tokenize("\n")).streaming().unmarshal(csv).marshal().json(JsonLibrary.Jackson).bean(MyBean.class,"publish").log("done.").end();
答案 1 :(得分:1)
您可以使用unmarshal和json格式。像这样:
.unmarshal().json(JsonLibrary.Jackson, YourClass.class)
或
.unmarshal().json(JsonLibrary.Jackson)
在第一个例子中,您可以将它放在Pojo中,以便在以下过程中操作数据:
.process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
YourClass yourClass = exchange.getIn().getBody(YourClass.class);
})