Использование выражения мула для указания на элементы в объекте JsonData

У меня есть входящая полезная нагрузка в формате JSON. Я конвертирую его с помощью преобразователя «JSON в объект», а затем передаю данные компоненту (как объект JsonData). Затем мой компонент возвращает тот же объект JsonData с изменениями. Я пытаюсь использовать компонент Amazon S3 в качестве следующего шага в своем потоке и пытаюсь связать имя корзины и другие значения с элементами, доступными в объекте JsonData. Вот выражение для имени корзины, например:

#[json: TopKey/BucketName]

По опыту это работало с JSON.

Однако, когда я запускаю это, вот что я получаю:

Сообщение: Не удалось вызвать getObjectContent. Полезная нагрузка сообщения имеет тип: JsonData Код: MULE_ERROR-29999

  1. Не удалось вызвать getObjectContent. Полезная нагрузка сообщения имеет тип: JsonData (org.mule.api.MessagingException) org.mule.module.s3.processors.GetObjectContentMessageProcessor:177 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html )

Есть ли способ, которым я могу использовать свой объект JsonData и извлекать из него информацию, или мне нужно преобразовать его обратно во что-то еще, прежде чем передавать его компоненту Amazon S3?

Спасибо,


person Loic Duros    schedule 20.03.2014    source источник


Ответы (3)


Удалите пустое место из вашего выражения: #[json:TopKey/BucketName]

person Anton Kupias    schedule 20.03.2014

Попробовав еще немного поиграть с моим выражением, я понял, что могу просто получить доступ к элементам так, как я уже делаю это в своем Java-компоненте:

#[payload.get("TopKey").get("BucketName").getTextValue()]

и у меня есть BucketName!

person Loic Duros    schedule 20.03.2014

Вы можете установить «Класс возврата» на java.util.Map в процессоре «JSON to Object», затем вы можете получить доступ к значению через #[payload.TopKey.BucketName]

person user3390567    schedule 15.04.2015