Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用do替换Dataweave_Dataweave_Mulesoft - Fatal编程技术网

用do替换Dataweave

用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

我有一个场景,我试图从负载中删除null和空对象,并找到了下面的函数,但我知道“using”被“do”取代。我可以知道它看起来怎么样吗:

这是密码

%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)))会是什么样子
看起来我甚至可以这样做:但我想看看do
fun filterKeyValuePairs(value)=value-mapObject(value,key,index)->{((key):filterValue(value))if(not isEmpty(filterValue(value))}
如果它们只意味着
null
,这将很好地工作,但它们指定了
null
或空。如果您只关心
null
,那么这是一个不错的选择!如果它们只表示
null
,但指定了
null
或空,那么这将很好地工作。如果您只关心
null
,那么这是一个不错的选择!