Генерация JSON из возвращаемого значения метода bean с использованием верблюжьих маршрутов - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть компонент с методом, который создает список объектов. Я хочу создать JSON с Джексоном из этого списка POJO.

public class SimpleBean {
     public List<Object> constructObject() {
       List<Object> objects = new ArrayList<>();
       // construct objects
       return objects;
     }
}

Тогда в моем верблюжьем маршруте я хочу создать json из моего метода bean. Вот, что я сделал и, похоже, не работает

@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");
}

верблюд возвращает файл с UUID без расширения и с NULL в качестве содержимого. Что мне здесь не хватает, ребята!?

1 Ответ

2 голосов
/ 26 апреля 2019

Чтобы установить имя файла, вы должны установить заголовок перед вызовом файла:

        .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"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...