Dataweave - фильтр, если значение поля равно нулю или нет - PullRequest
2 голосов
/ 03 июня 2019

Я прочитал файл, который содержит JSON Array, например:

[
   {
      "example":{
         "name":"edward",
         "lastName":"espin"
      },
      "error":"That name doesn't exists"
   },
   {
      "example":{
         "name":"toretto",
         "lastName":"brav"
      },
      "error":null
   }
]

Я хочу сохранить в новом файле только те записи, значение ошибки которых не равно нулю в том же формате.

Я использовал for-each, который проходит через каждый JSON и внутри, проверяет, не содержит ли этот JSON поле «error» со значением NULL (payload.error != null).

Проблема в том, что я использую for-each и choice.

Ожидаемый результат должен быть:

[
   {
      "example":{
         "name":"edward",
         "lastName":"espin"
      },
      "error":"That name doesn't exists"
   }
]

Есть ли более простой способ с компонентом преобразования и Dataweave 2 ?

Ответы [ 2 ]

4 голосов
/ 03 июня 2019

Это довольно просто, просто используйте оператор фильтра в процессоре сообщений преобразования сообщений.

%dw 2.0
output application/json
---
payload filter ((item, index) -> item.error != null)
1 голос
/ 21 июня 2019

Ниже еще один способ

payload[?($.error != null)]
...