Я работаю с API, который в основном позволяет осуществлять навигацию по файловой системе.Я пытаюсь получить доступ к данным из возвращенного JSON через API, чтобы выполнить функцию над ним.
Ниже приведен код, которым я пользуюсь для доступа к API.Я попытался использовать unmarshal для преобразования JSON, возвращенного в карту.
from("timer://foo?fixedRate=true&period=120000")
.log("Checking for files")
.setHeader("Authorization", simple(myHttp.getAuth()))
.setHeader("CamelHttpMethod", constant("GET"))
.to(myHttp.getFullRequest())
.unmarshal(new JacksonDataFormat(Map.class)).log("${body}");
, который возвращает мне эти данные:
{
objects=[
{
name=file1.csv,
type=file
},
{
name=dir1,
type=directory,
},
{
name=dir2,
type=directory
},
{
name=dir3,
type=directory
},
{
name=dir4,
type=directory
}]
}
Я хочу получить доступ к массиву в разделе «объекты», чтобы проверить, существуют ли какие-либо файлы в этом каталоге.До сих пор я пытался регистрировать данные только под объектами и поэтому использовал этот код:
.unmarshal(new JacksonDataFormat(Map.class)).log("${body.objects}");
Используя $ {body.objects}, я все еще не могу получить доступ к данным внутри MAP.Я ожидал, что будет возвращено что-то подобное:
[{
name=file1.csv,
type=file
},
{
name=dir1,
type=directory,
},
{
name=dir2,
type=directory
},
{
name=dir3,
type=directory
},
{
name=dir4,
type=directory
}]
, но вместо этого я получаю эту ошибку:
Метод с именем: объекты не найдены в bean-компоненте: {objects = [{name= file1.csv, тип = файл}, {имя = dir1, тип = каталог}, {имя = dir2, тип = каталог}, {имя = dir3, тип = каталог}, {имя = dir4, тип = каталог}]} типа: java.util.LinkedHashMap.Exchange [ID-IT1289-1529914067957-0-1]
Получаю ли я доступ к возвращенной MAP после неправильного использования unmarshall?Какой правильный синтаксис я должен использовать, если это так?
Я видел другие примеры демаршаллинга ... но я не могу полностью понять.Я заметил, что во многих примерах используется класс со структурой JSON.Это необходимо?Если мое тело в настоящее время имеет тип: java.util.LinkedHashMap, я ожидаю, что это не должно быть проблемой для доступа, но я не могу найти способ.
Заранее спасибо