骆驼如何用流媒体模式处理json?

时间:2017-06-18 18:33:46

标签: apache-camel

为了在流模式下读取json和unmarshal,Camel OOB中有哪些选项?如果没有开箱即可实现?

我找到了可能有帮助的camel-xstream。流模式是默认设置还是我们需要做其他事情才能使其以流模式读取?

还有杰克逊流媒体api。骆驼可以使用吗?

一些例子会有所帮助。 感谢

2 个答案:

答案 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);
})