我有一个场景,我试图从有效负载中删除空和空对象,并找到以下函数,但是我知道“the”被替换为"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)发布于 2020-05-18 02:35:17
与do相同的代码;do基本上为您提供了header --- 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")发布于 2020-05-19 14:11:12
你试过使用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"https://stackoverflow.com/questions/61861318
复制相似问题