覆盖 skipNullOn="everywhere"
override skipNullOn="everywhere"
我把我的dataweave脚本分成模块,我在主dwl中使用了skipNullOn="everywhere"
,所以所有模块中的所有空值都被跳过了。但是,我不想跳过特定模块的空值。我如何覆盖(取消)该特定模块的 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):
{
}
你需要明确地为那个字段写逻辑,应该是这样的
%dw2.0
output application/json skipNullOn="everywhere"
---
{
"ABC": if (payload.XML.ABC_val !=null ) else ""
}
您可以尝试此解决方法,以获得预期的结果。使用两个dataweave
1st Dataweave(无论哪里出现“nil”,都需要更新语法,如下所示)
%dw 2.0
output application/xml skipNullOn="everywhere"
ns xsi http://www.w3.org/2001/XMLSchema-instance
---
{
ABC @( xsi#nil:"true"): payload.ABC ,
DEF : payload.DEF
}
第二个数据编织
%dw 2.0
output application/json
---
payload
然后您可以轻松地将 null 替换为 ""。
由于回复的比较晚,不知道对你有没有帮助。无论如何,您可以在 属性 文件中以逗号分隔格式获得要跳过 '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')
并将其分配给 toSkipNullOn.
我把我的dataweave脚本分成模块,我在主dwl中使用了skipNullOn="everywhere"
,所以所有模块中的所有空值都被跳过了。但是,我不想跳过特定模块的空值。我如何覆盖(取消)该特定模块的 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):
{
}
你需要明确地为那个字段写逻辑,应该是这样的
%dw2.0
output application/json skipNullOn="everywhere"
---
{
"ABC": if (payload.XML.ABC_val !=null ) else ""
}
您可以尝试此解决方法,以获得预期的结果。使用两个dataweave
1st Dataweave(无论哪里出现“nil”,都需要更新语法,如下所示)
%dw 2.0
output application/xml skipNullOn="everywhere"
ns xsi http://www.w3.org/2001/XMLSchema-instance
---
{
ABC @( xsi#nil:"true"): payload.ABC ,
DEF : payload.DEF
}
第二个数据编织
%dw 2.0
output application/json
---
payload
然后您可以轻松地将 null 替换为 ""。
由于回复的比较晚,不知道对你有没有帮助。无论如何,您可以在 属性 文件中以逗号分隔格式获得要跳过 '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')
并将其分配给 toSkipNullOn.