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")