Медиатор DataMapper: сбой сопоставления, когда родительский элемент свойства во входных данных JSON равен нулю - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь отобразить результат json объект с вложенными полями в wso2 через преобразователь данных в интеграторе wso2 esb. Вот что я пытаюсь достичь:

Введите json файл на карту:

{
  "name":"John",
  "location": {
    "id": 1,
    "city": "Sydney"
  }
}

Выведите json файл для получения:

{
  "name":"John",
  "city": "Sydney"
}

Он работает нормально до тех пор, пока входные данные Json не станут

{
  "name":"John",
  "location": null
  }
}

. Мне нужен только результат

{
  "name":"John"
}

, но вместо этого я получил исключение, потому что расположение равно нулю.

ERROR {org.wso2.carbon.mediator.datamapper.DataMapperMediator} - DataMapper mediator : mapping failed Error while reading input stream. Script engine unable to execute the script javax.script.ScriptException: TypeError: Cannot get property "city" of null in <eval> at line number 1

Моя проблема заключается в том, как правильно обработать его в посреднике DataMapper, чтобы при определенных условиях это поле не отображалось.

Если кто-то может мне помочь, я буду весьма признателен.

Спасибо.

1 Ответ

1 голос
/ 03 мая 2020

Кажется, я исправил проблему.

Вы можете добавить любую проверку состояния в файле .dm c в проекте реестра.

if (inputroot.location != null) {
    outputroot[0].city = inputroot.location.city;
}
...