【发布时间】:2021-02-07 13:14:38
【问题描述】:
我有一个元素<ABC xsi:nil="true">。我想在 dataweave 2.0 中编写一个条件来检查这个 xsi:nil 的值,如果它等于“true”,我想在 JSON 中转换为 "ABC": null,我在脚本中使用 skipNullOn="everywhere"。我尝试使用payload.ABC.@nil == "true",但它给了null
【问题讨论】:
我有一个元素<ABC xsi:nil="true">。我想在 dataweave 2.0 中编写一个条件来检查这个 xsi:nil 的值,如果它等于“true”,我想在 JSON 中转换为 "ABC": null,我在脚本中使用 skipNullOn="everywhere"。我尝试使用payload.ABC.@nil == "true",但它给了null
【问题讨论】:
这可能会有所帮助。
%dw 2.0
output application/json skipNullOn="everywhere"
fun replaceElementAndAttribute(value:Any, name: String, newValue: Any) = do {
value match {
case obj is Object -> obj mapObject ((value, key, index) ->
if(key.@nil ~= "true")
(key): "null"
else
(key) @((replaceElementAndAttribute(key.@, name, newValue))): replaceElementAndAttribute(value, name, newValue)
)
else -> value
}
}
---
replaceElementAndAttribute(payload,"", "")
这类似于here 提到的内容。
但是,使用此递归函数,它会将值输出为“null”字符串..
【讨论】: