Я передаю полезную нагрузку, где она содержит имя пользователя и пароль, я маскирую их

#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. Обновлено решением только для условий.