我具有以下DW 2.0函数,用于修剪JSON有效负载中任何字符串值上的空格:
fun whiteSpaceTrimmer(item) = item match {
case is Array -> $ map whiteSpaceTrimmer($)
case is Object -> $ mapObject {
($$): $ match {
case is String -> trim($)
case is Object -> whiteSpaceTrimmer($)
case is Array -> $ map whiteSpaceTrimmer($)
else -> $
}
}
case is String -> trim($)
else -> $
}
Run Code Online (Sandbox Code Playgroud)
由于它是递归的,因此我不确定在抛出异常之前它可以处理多深的嵌套结构。我可以传递给此函数的嵌套元素数量有限制吗?如果是这样,有没有更好的方法?
有没有办法采用递归函数(如下所示)并使其成为尾递归?我有这样的输入:
{
"message": "Test ",
"read": [
{
"test": " t "
}
]
}
Run Code Online (Sandbox Code Playgroud)
和这个 Dataweave 函数
fun trimWS(item) = item match {
case is Array -> $ map trimWS($)
case is Object -> $ mapObject {
($$): $ match {
case is String -> trim($)
case is Object -> trimWS($)
case is Array -> $ map trimWS($)
else -> $
}
}
case is String -> trim($)
else -> $
}
Run Code Online (Sandbox Code Playgroud) dataweave ×2