Как преобразовать ManagedCursorStreamProvider в JSOn объект в муле 4 - PullRequest
3 голосов
/ 08 апреля 2020

Как преобразовать ManagedCursorStreamProvider в Json объект в муле. Я написал java метод, который принимает Json Объект в качестве ввода

Request Payload:
{ a: "one",
b : "two"}

Invoke stati c

arg0 : payload

Java Функция вызывается с помощью invoke stati c

public static func(JsonObject json){
}

Я получаю следующую ошибку:

Ожидаемые аргументы: [com.google.gson.JsonObject jsonObject], и была предпринята попытка вызова с аргументами [org.mule. runtime.core.internal.streaming.bytes.ManagedCursorStreamProvider arg0]. Не найдено подходящего преобразования, соответствующего ожидаемому типу параметра [jsonObject].

ОБНОВЛЕНИЕ: Я обновил свой метод java, чтобы принимать в качестве входных данных строку.

"Cannot coerce Object { encoding: UTF-8, mediaType: application/json; charset=UTF-8, mimeType: application/json, raw: org.mule.weave.v2.el.SeekableCursorStream@868075a } (org.mule.weave.v2.el.MuleTypedValue@7c0c5e89) to String

1| arg0 : vars.req as String
          ^^^^^^^^^^^^^^^^^^
Trace:
  at main (line: 1, column: 8)" evaluating expression: "arg0 : vars.req as String".

1 Ответ

2 голосов
/ 08 апреля 2020

Мул не знает, как конвертировать в GSON JsonObject. Вы можете использовать DataWeave, чтобы преобразовать его в карту Java. Кроме того, вы можете изменить аргумент метода Java на String, и Mule будет прозрачно преобразовывать поток в String. Обязательно используйте последнюю версию модуля Java.

Если вы хотите преобразовать объект в пользовательский тип, вам нужно будет реализовать его самостоятельно в Java.

...