我可以在DataWeave中关闭区分大小写吗?
两个不同的请求正在返回响应,其中第一个包含一个称为CDATA的节点,另一个包含一个称为CData的节点。在DataWeave中,有一种方法可以将它们视为相等,或者我是否需要使用单独的代码语句,例如有效负载.Data.CDATA和有效负载.Data.CData?如果事情不区分大小写,那么我可以有一条语句,例如payload.data.cdata。
预先感谢, 特里
看来我需要两个不同的陈述。
payload.Data。* CDATA映射$。@ SeqId当有效载荷。数据?和payload.Data.CDATA?和payload.Data.CDATA。@ SeqId?
payload.Data。* CData映射$。@ SeqId当有效载荷。数据?和payload.Data.CData?和payload.Data.CData。@ SeqId?
答案 0 :(得分:1)
否,但是您可以创建类似以下的函数来选择忽略大小写。
通过给定键(mapObject
使用lower
比较键)过滤对象,然后从生成的对象(使用pluck
)中获取值。
%function selectIgnoreCase(obj, keyName)
obj mapObject ((v, k) -> k match {
x when (lower x) == keyName -> {(k): v},
default -> {}
}) pluck $
您将像这样使用它:
selectIgnoreCase(payload.Data, "cdata")
注意:使用Mule 4(和DW 2)的语法会更好一些。