Как распечатать формат json на консоль с помощью bean

Я преобразовываю объект в json с интеграцией spring.

<int-jdbc:inbound-channel-adapter query = "SELECT * FROM posts" row-mapper = "postMapper"
                                      channel = "dataInbound" data-source = "dataSource">
        <int:poller fixed-rate = "5000" />
    </int-jdbc:inbound-channel-adapter>

    <int:channel id = "dataInbound" />

    <int:object-to-json-transformer input-channel = "dataInbound" output-channel = "printing"/>
    <int:service-activator id = "printing" method = "print"
                           input-channel = "print" ref = "eventActivator"/>
 <bean id = "postMapper" class = "com.example.domain.PostsMapper"/>

    <bean id = "eventActivator" class = "com.example.Dispatcher"/>
public class Posts {

    private String id;
    private String title;
    private String author;
   ...Constructor and setters/getters...
}

public class PostsMapper implements RowMapper<Posts> {

    public Posts mapRow(ResultSet rs, int rowNum) throws SQLException{
        String id = rs.getString("id");
        String title = rs.getString("title");
        String author = rs.getString("author");
        return new Posts(id, title, author);
    }
}

Но как вывести трансформер в консоль <int:service-activator>. Ну, я попробовал это, но это не сработало:

 public void print(List<Posts> posts){
        for (Posts post: posts){
            System.out.print("\n***** " + post);
        }
    }

Ошибки, которые я получаю:

Failed to convert from type [java.util.ArrayList<?>] to type [java.util.List<com.example.domain.Posts>] for value '[{id=1, title=test, author=me}]'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type [com.example.domain.Posts]
No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type [com.example.domain.Posts]
Problem invoking method: public void com.example.Dispatcher.print(java.util.List)

Так как же должен выглядеть мой bean для печати на консоли?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Пожалуйста, внимательно прочитайте трассировку стека. Ваша проблема не связана с выводом на консоль. Ты там не рядом.

Посмотрите на эту ошибку еще раз:

No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type [com.example.domain.Posts]

Итак, ваш payload на самом деле не List<Posts>, а ArrayList<LinkedHashMap<?, ?>>, в конце концов.

Хотя не знаю как. По умолчанию <int:object-to-json-transformer> создает представление string для JSON. Вы, вероятно, делаете что-то еще, что не отображается в вопросе...

ОБНОВЛЯТЬ

Чтобы решить вашу насущную проблему, вам просто нужно, чтобы ваш print() был таким:

public void print(List<Map<?, ?>> posts){

Однако, согласно вашему List<Posts>, совершенно непонятно, зачем преобразовывать результат List<Posts> из <int-jdbc:inbound-channel-adapter> в JSON, поскольку он / она не ожидает JSON в нисходящем направлении.

Ну, я отредактировал свой вопрос. Добавил все ошибки не знаю поможет ли.

uyuola 11.12.2020 16:47

Другие вопросы по теме