java - Apache Camel : I can't get an object out of the body and transform it

标签 java json spring jackson apache-camel

如果这样做的话:body -> string -> user

    .to("direct:httpClient")
    .process(new Processor() {
        @Override
        public void process(Exchange exchange) throws JsonProcessingException {
            String body = exchange.getIn().getBody(String.class);
            User[] users = jacksonDataFormat.getObjectMapper().readValue(body, User[].class);
        }
    })

此选项效果很好,但如果您这样做:

User [] body = exchange.getIn().getBody(User[].class);

body -> 用户,它不起作用。用户始终为空。

为了清楚起见:

from("timer://test?period=2000")
                .setHeader(Exchange.HTTP_METHOD).constant(HttpMethod.GET)
                .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
                .convertBodyTo(User[].class)
                .to("http://localhost:8085/api/user")
                .process(exchange -> System.out.println(exchange.getIn().getBody(String.class)))

控制台输出:

[
   {
      "name":"BLA"
   },
   {
      "name":"BLA"
   },
   {
      "name":"BLA"
   }
]

如果是这样:

from("timer://test?period=2000")
                .setHeader(Exchange.HTTP_METHOD).constant(HttpMethod.GET)
                .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
                .convertBodyTo(User[].class)
                .to("http://localhost:8085/api/user")
                .process(exchange -> System.out.println(exchange.getIn().getBody(User[].class)))

控制台输出:空

原因是什么?我该如何解决这个问题?

最佳答案

如果您希望Camel处理JSON字符串到Java对象的过程,您可以将其添加为编码器 - https://camel.apache.org/components/latest/dataformats/jacksonxml-dataformat.html

关于java - Apache Camel : I can't get an object out of the body and transform it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65998426/

相关文章:

java - 如何将服务器类放在我的网站上,以便我的客户端类可以从不同的计算机与其进行通信?

java - ArrayList 到字符串数组

java - 如何在 java 中将 json 作为 Rest Post Web 服务的查询参数传递

java - 升级到 Hibernate 5 时 SessionFactoryImpl 中的 AbstractMethodError

java - spring mvc 表单错误没有出现在 jsp 上

java - Spring Validation 在我的消息代码中添加后缀

Java Arraylist.contains(Object) 总是返回 false

java - 将 HttpClient 与 SSL 和证书结合使用

javascript - 在 Dropzone 文件上传控件中禁用多选

python - 了解 json.loads() 中的 object_pairs_hook