用do替换Dataweave
我有一个场景,我试图从负载中删除null和空对象,并找到了下面的函数,但我知道“using”被“do”取代。我可以知道它看起来怎么样吗: 这是密码用do替换Dataweave,dataweave,mulesoft,Dataweave,Mulesoft,我有一个场景,我试图从负载中删除null和空对象,并找到了下面的函数,但我知道“using”被“do”取代。我可以知道它看起来怎么样吗: 这是密码 %dw 2.0 fun filterValue(value) = value match { case is Object -> filterKeyValuePairs(value) case is Array -> $ map filterValue($) filter (not (isEmpty($))) el
%dw 2.0
fun filterValue(value) = value match {
case is Object -> filterKeyValuePairs(value)
case is Array -> $ map filterValue($) filter (not (isEmpty($)))
else -> value
}
fun filterKeyValuePairs(value) = value mapObject (value, key, index) ->
using (filteredValue = filterValue(value)){
((key): filteredValue) if (not isEmpty(filteredValue))
}
---
filterValue(payload)
与do相同的代码;do基本上会给你
标题--body
%dw 2.0
fun filterValue(value) = value match {
case is Object -> filterKeyValuePairs(value)
case is Array -> $ map filterValue($) filter (not (isEmpty($)))
else -> value
}
fun filterKeyValuePairs(value) = value mapObject (value, key, index) -> do {
var filteredValue = filterValue(value)
---
((key): filteredValue) if (not isEmpty(filteredValue))
}
---
filterValue(payload)
如果您想在不使用第二个函数的情况下执行此操作:
%dw 2.0
fun filterValue(value) = value match {
case is Object -> $ mapObject do {
var filteredVal = filterValue($)
---
(($$): filteredVal) if (not (isEmpty(filteredVal)))
}
case is Array -> $ map filterValue($) filter (not (isEmpty($)))
else -> value
}
---
filterValue(payload)
您也可以考虑在一个位元附近更改它以将筛选器用作函数,这样您就可以过滤除空值以外的其他东西:
fun filterObjectAndArrays(value, fn: (v: Any) -> Boolean) = value match {
case is Object -> $ mapObject do {
var filteredVal = filterObjectAndArrays($, fn)
---
(($$): filteredVal) if (fn(filteredVal))
}
case is Array -> $ map filterObjectAndArrays($, fn) filter (fn($))
else -> value
}
---
//payload filterObjectAndArrays (not isEmpty($))
payload filterObjectAndArrays ($ != "a")
与do相同的代码;do基本上会给你
标题--body
%dw 2.0
fun filterValue(value) = value match {
case is Object -> filterKeyValuePairs(value)
case is Array -> $ map filterValue($) filter (not (isEmpty($)))
else -> value
}
fun filterKeyValuePairs(value) = value mapObject (value, key, index) -> do {
var filteredValue = filterValue(value)
---
((key): filteredValue) if (not isEmpty(filteredValue))
}
---
filterValue(payload)
如果您想在不使用第二个函数的情况下执行此操作:
%dw 2.0
fun filterValue(value) = value match {
case is Object -> $ mapObject do {
var filteredVal = filterValue($)
---
(($$): filteredVal) if (not (isEmpty(filteredVal)))
}
case is Array -> $ map filterValue($) filter (not (isEmpty($)))
else -> value
}
---
filterValue(payload)
您也可以考虑在一个位元附近更改它以将筛选器用作函数,这样您就可以过滤除空值以外的其他东西:
fun filterObjectAndArrays(value, fn: (v: Any) -> Boolean) = value match {
case is Object -> $ mapObject do {
var filteredVal = filterObjectAndArrays($, fn)
---
(($$): filteredVal) if (fn(filteredVal))
}
case is Array -> $ map filterObjectAndArrays($, fn) filter (fn($))
else -> value
}
---
//payload filterObjectAndArrays (not isEmpty($))
payload filterObjectAndArrays ($ != "a")
您是否尝试过使用
skipOnNull
?它还将删除空对象:
skipNullOn
Skips null values in the specified data structure. By default, it does not skip the values. Valid values are elements, attributes, or everywhere.
arrays
Ignore and omit null values from JSON output, for example, output application/json skipNullOn="arrays".
objects+ Ignore an object that has a null value. The output contains an empty object ({}) instead of the object with the null value, for example, output application/json skipNullOn="objects".
everywhere
Apply skipNullOn to arrays and objects, for example, output application/json skipNullOn="everywhere"
您是否尝试过使用
skipOnNull
?它还将删除空对象:
skipNullOn
Skips null values in the specified data structure. By default, it does not skip the values. Valid values are elements, attributes, or everywhere.
arrays
Ignore and omit null values from JSON output, for example, output application/json skipNullOn="arrays".
objects+ Ignore an object that has a null value. The output contains an empty object ({}) instead of the object with the null value, for example, output application/json skipNullOn="objects".
everywhere
Apply skipNullOn to arrays and objects, for example, output application/json skipNullOn="everywhere"
看起来我甚至可以这样做:但是我想看看do
fun filterKeyValuePairs(value)=value mapObject(value,key,index)->{((key):filterValue(value))if(not isEmpty(filterValue(value)))会是什么样子
看起来我甚至可以这样做:但我想看看dofun filterKeyValuePairs(value)=value-mapObject(value,key,index)->{((key):filterValue(value))if(not isEmpty(filterValue(value))}
如果它们只意味着null
,这将很好地工作,但它们指定了null
或空。如果您只关心null
,那么这是一个不错的选择!如果它们只表示null
,但指定了null
或空,那么这将很好地工作。如果您只关心null
,那么这是一个不错的选择!