java - 使用骆驼路由从 bean 方法返回值生成 JSON
问题描述
我有一个带有构造对象列表的方法的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。我在这里想念什么!?
解决方案
要设置文件名,您必须在调用文件之前设置标题:
.setHeader(Exchange.FILE_NAME, constant("test.json"))
.to("file:C:/data/export/JSON")
你的方法被命名为constructObject而不是constructObject ,但我认为这是一个错字,否则你会得到一个错误。
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"]
推荐阅读
- ios - 从方法向现有 NSDictionary 添加值
- import - 在原型中从父文件夹导入到子文件夹
- python - 按列号熊猫选择不相邻的列
- php - PHP 从 PHP 脚本生成的 url 下载图像
- function - 查询寄存器数据时批处理脚本中的数据同步问题,我需要 RegFlushKey 之类的东西,但需要批量处理
- c# - C# Winforms:无法使用 system.windows 创建窗口
- python - Python 告诉我我的 if 语句包含语法错误
- excel - 嵌套的 For/Do While/While 无法到达 VBA/Macro 中的外循环
- javascript - 尝试替换 div img src 时 Jquery attr 不起作用
- javascript - 使用带有变量的 querySelector 来获取单选按钮值