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

如何在JSONata数组内正确使用$lookup()函数实现属性值映射?

问题原因

这是JSONata的上下文作用域规则导致的:

  • 在Phone.{...}数组投影块内部,当前上下文指向Phone数组的每一个子元素对象,直接调用aux时,JSONata会优先在当前子元素的属性中查找aux,找不到就返回undefined
  • JSONata默认不会输出值为undefined的字段,因此tipo字段直接被忽略,没有出现在最终结果里
  • 数组外部的$lookup能正常执行,是因为外部上下文仍然是根输入对象,可以直接匹配到aux属性

解决方案

用$root关键字明确指定读取根级的aux对象即可,修改后的JSONata代码如下:

{
    "Telefone" : Phone.{
        "tipo" : $lookup($root.aux, type),
        "numero" : number 
    },
    "tipo" : $lookup(aux, Phone[0].type)
}

修改后运行即可得到符合预期的结果,每个Telefone数组元素都会携带正确翻译后的tipo字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:27:04