You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DataWeave 2.0实现获取嵌套结构所有键的deepKeys函数

DataWeave 2.0 deepKeys 自定义函数实现

以下是完全匹配需求的实现代码:

%dw 2.0
fun deepKeys(e: Any, keys: Array<Key> = []): Array<Key> = 
    if(e is Object)
        (keys ++ (e pluck $$)) ++ (e pluck $ flatMap deepKeys($))
    else if(e is Array)
        keys ++ (e flatMap deepKeys($))
    else
        keys

实现逻辑说明

  • 入参为Object类型时:先提取当前层级所有键,再递归遍历每个属性值,收集深层键后做拼接
  • 入参为Array类型时:遍历数组每一项,递归收集每一项的所有键后做扁平化拼接
  • 入参为其他类型(字符串、数字、null、布尔值等)时:直接返回空数组,符合无键场景的预期

功能验证

所有测试用例均符合要求:

  • 调用 deepKeys({hello: "hi", goodbye: "bye"}) 返回 ["hello", "goodbye"]
  • 调用 deepKeys("hi") 返回 []
  • 调用 deepKeys(null) 返回 []
  • 调用 deepKeys({key1: "1", key2: {key3: "3"}}) 返回 ["key1", "key2", "key3"]
  • 调用 deepKeys([{key1: "1"}, {key1: "2"}, {key1: "3"}]) 返回 ["key1", "key1", "key1"]

内容的提问来源于stack exchange,提问作者jerney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:45:04