DataWeave中keysOf与contains组合返回false的原因咨询
DataWeave中keysOf函数与contains方法组合返回false的原因
给定如下对象:
{ "keyA":1, "keyB":2 }
执行DataWeave脚本 keysOf(payload) contains "keyA" 时,预期返回true但实际返回false。直接使用字符串数组["keyA","keyB"]调用contains能得到预期的true,但将keysOf的结果存入变量后再用contains仍无效。
失效原因
keysOf()函数返回的并不是普通的String类型数组,而是由Key类型元素组成的集合。虽然在输出时这些Key元素的显示形式和字符串完全一致,但它们的底层类型和String是不同的。contains()方法会进行严格的类型匹配,当你用String类型的"keyA"去匹配Key类型的元素时,因为类型不匹配,所以返回false。- 直接使用
["keyA","keyB"]调用contains有效,是因为这个数组里的元素本身就是String类型,和你用来匹配的"keyA"类型完全一致,所以能匹配成功。 - 把
keysOf的结果存入变量后,变量中的元素依然是Key类型,所以用String类型的参数调用contains还是会因为类型不匹配返回false。
内容的提问来源于stack exchange,提问作者Istorn
相关产品推荐
相关产品推荐

