#java #mule #dataweave
Вопрос:
Я передаю полезную нагрузку, где она содержит имя пользователя и пароль, я маскирую их, но я пытаюсь написать условие, при котором, если я передаю полезную нагрузку без имени пользователя и пароля, она должна пропустить условие маски и передать полезную нагрузку, может ли кто-нибудь помочь мне в этом?
Ответ №1:
Если вас интересует только способ определения того, содержит ли полезная нагрузка поля учетных данных или нет:
%dw 2.0 output application/json import * from dw::core::Arrays fun hasCredentials(o, credentialFields) = credentialFields every (o[$]?) var maskedFields=["username", "password"] --- hasCredentials(payload, maskedFields)
Если вы хотите выполнить маскировку простым способом, маскируйте значение только в том случае, если имя ключа совпадает с именем для учетных данных. Для этого вы можете использовать MapObject() :
%dw 2.0 output application/json fun maskCredentials(p)= p mapObject ($): if ($ as String == "username" or $ as String == "password") "xxxx" else $ --- maskCredentials(payload)
Ввод:
{ "name": "John", "address": "Some Street 21" "username": "john1", "password": "abc123" }
Выход:
{ "name": "John", "address": "Some Street 21", "username": "xxxx", "password": "xxxx" }
Комментарии:
1. Обновлено решением только для условий.