如果这样做的话: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/