我有一个带有构造对象列表的方法的bean。我想从此POJO列表中生成带有jackson的json。
public class SimpleBean {
public List<Object> constructObject() {
List<Object> objects = new ArrayList<>();
// construct objects
return objects;
}
}
然后在我的骆驼路线中,我想从我的bean方法生成json。在这里,我做了什么,似乎没有工作
@Override
public void configure() throws Exception {
from("quartz expression")
.log(LoggingLevel.INFO, LOGGER, "work started")
.bean(simpleBean, "constructObjects")
.marshal()
.json(JsonLibrary.Jackson)
.to("file:C:/data/export/JSON")
.setHeader(Exchange.FILE_NAME, constant("test.json"))
.log(LoggingLevel.INFO, LOGGER, "work completed");
}
camel返回具有UUID且无扩展名且内容为NULL的文件。伙计们,我在想什么!
答案 0 :(得分:2)
要设置文件名,必须在调用文件之前 设置标题:
.setHeader(Exchange.FILE_NAME, constant("test.json"))
.to("file:C:/data/export/JSON")
您的方法被命名为constructObject,而不是constructObject s ,但是我认为这是一个错字,因为否则会出现错误。
我无法模拟的NULL。使用以下路线:
public static class SimpleBean {
public List<Object> constructObject() {
List<Object> objects = new ArrayList<>();
objects.add("entry");
return objects;
}
}
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
from("direct:start")
.bean(SimpleBean.class, "constructObject")
.marshal().json(JsonLibrary.Jackson)
.setHeader(Exchange.FILE_NAME, constant("test.json"))
.to("file:C:/tmp/JSON");
}
};
}
我得到一个名为test.json的输出文件,内容为:
["entry"]