Я звоню в службу REST через компонент http4 Camel и хочу сопоставить ответ JSON с некоторыми заголовками.По этой причине я использовал язык jsonpath.
<route>
...
<toD uri="http4://theCallingServiceUrl"/>
<setHeader headerName="CamelAddressesLink">
<jsonpath>$._links.collection/addresses.href</jsonpath>
</setHeader>
<setHeader headerName="CamelAvailabilitiesLink">
<jsonpath>$._links.collection/availabilities.href</jsonpath>
</setHeader>
</route>
Проблема возникает, когда я пытаюсь сделать то же самое с помощью bean-компонента.
public void test(@JsonPath("$._links.collection/addresses.href") String address,
@JsonPath("$._links.collection/availabilities.href") String availabilities) {
...
}
Я получаю следующее
Caused by: com.jayway.jsonpath.PathNotFoundException: Expected to find an object with property ['_links'] in path $ but found 'java.lang.String'. This is not a json object according to the JsonProvider: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'.
Есть идеи?Если я пытаюсь извлечь только одно значение из JSON, это работает, проблема возникает, если я пытаюсь добавить более одной аннотации @JsonPath.
Спасибо!