Data Weave 中的条件串联
Conditional concatenation in Data Weave
有没有办法对字符串进行条件连接。例如,如果字符串有值则添加它,但如果字符串为空则不添加。我正在创建一个长字符串,它将成为电子邮件的正文。 “payload.eachRecipient.company”字段可能有一个值,也可能为空。我只想在电子邮件中包含该行,如果它有值,但如果没有,则不显示“公司名称:”行。
payload.eachRecipient.city ++ ", " ++ payload.eachRecipient.state ++ " " ++ payload.eachRecipient.zipCode ++ "\n\n" ++
("Company Name: " ++ payload.eachRecipient.company (if payload.eachRecipient.company?)) ++ "\n" ++ "ID: " ++ payload.eachRecipient.sson ++ "\n" ++ "System Order Number: " ++ payload.eachRecipient.orderNum ++ "\n\n" ++
"Shipping Method: " ++ payload.eachRecipient.ShipVia ++ "\n\n" ++ "Order Summary:\n" ++ (vars.listOfMaterials.combinedString joinBy("\n")) ++
条件串联工作得很好
%dw 2.0
output application/json
---
'one '
++ ' two '
++ (if (true) ' three' else ' THREE')
++ (if (false) ' four' else ' FOUR')
我编写了一个函数,它接受将检查空值的字符串,任何你想添加到前面的东西和任何你想添加到后面的东西:
fun checkNull(aString, aFront, aBack) =
if (aString == null)
""
else
aFront ++ aString ++ aBack
函数的结果连接成更长的字符串:
(checkNull(payload.eachRecipient.company, "Company Name: ", "\n"))
checkNull(payload.eachRecipient.line2, "", "\n\t")
有没有办法对字符串进行条件连接。例如,如果字符串有值则添加它,但如果字符串为空则不添加。我正在创建一个长字符串,它将成为电子邮件的正文。 “payload.eachRecipient.company”字段可能有一个值,也可能为空。我只想在电子邮件中包含该行,如果它有值,但如果没有,则不显示“公司名称:”行。
payload.eachRecipient.city ++ ", " ++ payload.eachRecipient.state ++ " " ++ payload.eachRecipient.zipCode ++ "\n\n" ++
("Company Name: " ++ payload.eachRecipient.company (if payload.eachRecipient.company?)) ++ "\n" ++ "ID: " ++ payload.eachRecipient.sson ++ "\n" ++ "System Order Number: " ++ payload.eachRecipient.orderNum ++ "\n\n" ++
"Shipping Method: " ++ payload.eachRecipient.ShipVia ++ "\n\n" ++ "Order Summary:\n" ++ (vars.listOfMaterials.combinedString joinBy("\n")) ++
条件串联工作得很好
%dw 2.0
output application/json
---
'one '
++ ' two '
++ (if (true) ' three' else ' THREE')
++ (if (false) ' four' else ' FOUR')
我编写了一个函数,它接受将检查空值的字符串,任何你想添加到前面的东西和任何你想添加到后面的东西:
fun checkNull(aString, aFront, aBack) =
if (aString == null)
""
else
aFront ++ aString ++ aBack
函数的结果连接成更长的字符串:
(checkNull(payload.eachRecipient.company, "Company Name: ", "\n"))
checkNull(payload.eachRecipient.line2, "", "\n\t")