Mule 覆盖skipNullOn=";“无处不在”;

Mule 覆盖skipNullOn=";“无处不在”;,mule,dataweave,mulesoft,mule4,Mule,Dataweave,Mulesoft,Mule4,我已经将我的dataweave脚本划分为多个模块,并且在主dwl中使用了skipNullOn=“everywhere”,因此跳过所有模块中的所有空值。但是,我不想跳过特定模块的空值。如何覆盖(取消)该特定模块的skipNullOn=“everywhere” 输入: <XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ABC xsi:nil="true"/>

我已经将我的dataweave脚本划分为多个模块,并且在主dwl中使用了
skipNullOn=“everywhere”
,因此跳过所有模块中的所有空值。但是,我不想跳过特定模块的空值。如何覆盖(取消)该特定模块的skipNullOn=“everywhere”

输入:

<XML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ABC xsi:nil="true"/>
    <DEF/>
</XML>
预期产量( json):

获取输出(json):


您需要显式地为该字段编写逻辑,应该是这样的

%dw2.0
output application/json skipNullOn="everywhere"
---
{
"ABC": if (payload.XML.ABC_val !=null ) else ""
}

您需要显式地为该字段编写逻辑,应该是这样的

%dw2.0
output application/json skipNullOn="everywhere"
---
{
"ABC": if (payload.XML.ABC_val !=null ) else ""
}

您可以尝试此解决方法,以获得预期的结果。使用两个dataweave

1st Dataweave(无论您在哪里获得“nil”,语法都需要更新为下面的语法)

第二次数据编织

 %dw 2.0
output application/json
---
payload

然后,您可以轻松地将null替换为“”。

您可以尝试此解决方法,以获得预期的结果。使用两个dataweave

1st Dataweave(无论您在哪里获得“nil”,语法都需要更新为下面的语法)

第二次数据编织

 %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。

,因为我回答得很晚,我不确定这是否对您有多大帮助。无论如何,您可以在属性文件中以逗号分隔的格式列出要跳过“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。

请提供一些如何使用模块和主脚本的示例。@请查找输入和预期输出请提供一些如何使用模块和主脚本的示例。@请查找输入和预期输出,这表示ABC元素为空。但我想为所有具有xsi:nil=“true”的元素放置一个“”,前提是DataWeave支持xsi:nil。我不确定它是否存在。这表示ABC元素为空。但我想为所有具有xsi:nil=“true”的元素放置一个“”,前提是DataWeave支持xsi:nil。我不确定是不是。
%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) 
}