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

JSONata表达式报错修正:为指定API路径的policies数组追加元素

修正JSONata表达式实现Kubernetes JSON对象的数组追加操作

需求说明

需要给Kubernetes相关JSON对象中api_path为"v1/ldap"的条目里的policies数组追加"delete"元素。

原JSON对象

{
  "_namespace": "kubernetes",
  "api_paths": [
    {
      "api_action": "post",
      "api_path": "v1/ldap",
      "api_payload": {
        "policies": [
          "reader",
          "writer",
          "encrypt",
          "decrypt"
        ]
      }
    }
  ]
}

期望结果

{
  "_namespace": "kubernetes",
  "api_paths": [
    {
      "api_action": "post",
      "api_path": "v1/ldap",
      "api_payload": {
        "policies": [
          "reader",
          "writer",
          "encrypt",
          "decrypt",
           "delete"
        ]
      }
    }
  ]
}

错误表达式及报错信息

当前报错的JSONata表达式

$ ~> | {
    "api_paths": $map(function($path) {
        if ($path.api_path["v1/ldap"]) {
            return $merge([$path, {
                "api_payload": $merge([$path.api_payload, {
                    "policies": $append(api_payload.policies, "delete")
                }])
            }])
        } else {
            return $path
        }
    })
}

报错信息(翻译后)

期望":",却得到"merge"

修正后的JSONata表达式

简洁版(推荐)

利用JSONata路径选择器直接定位目标数组,操作更高效:

$ ~> | api_paths[api_path = "v1/ldap"].api_payload.policies | $append($, "delete") |

遍历数组兼容版

$ ~> | api_paths | function($path) {
    $path.api_path = "v1/ldap" ? 
        $merge([$path, {
            "api_payload": $merge([$path.api_payload, {
                "policies": $append($path.api_payload.policies, "delete")
            }])
        }]) : 
        $path
} |

修复说明

  • 修正条件判断逻辑:原表达式用$path.api_path["v1/ldap"]的数组索引写法错误,需改为$path.api_path = "v1/ldap"进行字符串相等判断
  • 修正变量引用上下文:$append中的api_payload.policies未指定当前遍历项,需改为$path.api_payload.policies,确保引用正确的对象属性
  • 规范transform操作符语法:原表达式的transform结构不符合JSONata语法规范,正确格式应为$ ~> | <目标路径> | <处理函数> |,或直接通过路径定位目标元素修改
  • 优化数组遍历方式:推荐直接使用api_paths[api_path = "v1/ldap"]路径选择器定位目标条目,避免冗余遍历,提升效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 07:50:21