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

JSLT中for表达式遍历数组时如何访问父级user_id字段?

解决JSLT遍历数组时访问父级字段的问题

这问题我之前处理类似需求时也踩过坑!你遇到的核心问题是循环内的上下文切换:当你用for (.friends)遍历数组时,循环体里的.已经指向数组中的单个friend对象了,这个对象里只有friend_id,自然拿不到外层的user_id。

两种可行的解决方法:

方法1:直接引用根节点上下文

在JSLT中,$代表整个原始输入的JSON根对象,所以你可以直接用$.user_id来获取外层的用户ID:

[ for (.friends) { 
    "user_id": $.user_id, 
    "friend_id": .friend_id 
  } 
]

方法2:提前保存父级字段到变量

如果层级更复杂,或者想让代码更清晰,你可以先把外层的user_id存成一个变量,再在循环里引用:

// 先把父级的user_id存到变量里
let $parent_user = .user_id
[ for (.friends) { 
    "user_id": $parent_user, 
    "friend_id": .friend_id 
  } 
]

验证效果

把你的输入JSON代入上面任意一段JSLT表达式,都会得到你期望的输出:

[ 
  { "user_id": "001", "friend_id": "002" }, 
  { "user_id": "001", "friend_id": "003" }, 
  { "user_id": "001", "friend_id": "004" } 
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:36:48