Here is if do so: 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);
}
})
This option works great, but if you do this:
User [] body = exchange.getIn().getBody(User[].class);
body -> user, it doesn't work. User always null.
For clarity:
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)))
Console output:
[
{
"name":"BLA"
},
{
"name":"BLA"
},
{
"name":"BLA"
}
]
If so:
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)))
Console output: null
What is the reason? how can I fix this?