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

如何在JSONata中使用变量/动态路径获取目标数据?

动态适配JSONata查询路径获取动态键值

源JSON示例

{
  "Player1": "Ryan",
  "Player2": "Nathan",
  "score": [
    {
      "match1": {
        "Ryan|Nathan": [
          {
            "Round1": {
              "total": 500
            }
          }
        ]
      }
    }
  ]
}

固定路径的查询方式

如果Player1和Player2的值固定,查询total的JSONata语句是:

{
    "Score": score.match1.`Ryan|Nathan`[0].Round1.total
}

对应的查询结果:

{
  "Score": 500
}

动态键的适配需求

当Player1和Player2的值动态变化(比如改成Will和Max,对应键名变成Will|Max)时,需要让查询路径自动匹配新的键名。之前尝试过拼接路径字符串:

"score.match1.`" & Player1 & "|" & Player2 & "`[0].Round1.total"

但不知道怎么把这个字符串当作路径来用。

正确的动态查询方法

不用拼接字符串路径,JSONata支持直接用方括号做动态键访问,把拼接后的键名放进方括号里就行:

{
    "Score": score.match1[Player1 & "|" & Player2][0].Round1.total
}

为什么这么做可行

  • Player1 & "|" & Player2会自动拼接出目标键名,比如Ryan|Nathan或者Will|Max
  • 用[动态键名]的方式替代固定的.+反引号语法,就能动态访问对应的属性
  • 后面的[0].Round1.total路径保持不变,继续访问嵌套结构就行

实际测试效果

如果源JSON换成下面这样:

{
  "Player1": "Will",
  "Player2": "Max",
  "score": [
    {
      "match1": {
        "Will|Max": [
          {
            "Round1": {
              "total": 750
            }
          }
        ]
      }
    }
  ]
}

用上面的动态查询语句,返回结果就是:

{
  "Score": 750
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:45:14