我已将dataweave脚本划分为模块,并且已skipNullOn="everywhere"
在主dwl中使用过,因此将跳过所有模块中的所有null值。但是,我不想跳过特定模块的空值。如何为该特定模块覆盖(空化)skipNullOn =“ everywhere”。
输入:
<XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ABC xsi:nil="true"/>
<DEF/>
</XML>
数据编织代码:
%dw2.0
output application/json skipNullOn="everywhere"
---
payload.XML
预期输出(json):
{
"ABC": ""
}
获取输出(json):
{
}
由于我回答得很晚,因此不确定是否对你有很大帮助。无论如何,你可以在属性文件中以逗号分隔的格式获取要跳过“ skipNullOn”检查的节点列表。然后尝试类似下面的操作,这将帮助你遍历所有节点,然后根据需要实现输出:
%dw 2.0
output application/json skipNullOn="everywhere"
var toSkipNullOn='ABC,XYZ'
fun checkNull(key,val) = if((toSkipNullOn splitBy(',')) contains(key as String)) '' else null
---
payload.XML mapObject (v0, k0, i0) ->
{
(k0):checkNull(k0,v0)
}
在此示例中,我已将节点名称(ABC,XYZ)硬编码为变量toSkipNullOn。取而代之的是,你必须从属性文件中读取它,p('key-name')
并将其分配给SkipNullOn。