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

JMESPath嵌套数组项拼接:JSON结构转换问题求助

如何用JMESPath将JSON附件列表转换为完整URL数组

我明白你的困扰——单个附件能生成正确URL,但批量处理时就乱了,这是因为直接对整个数组的id和filename做拼接,会把所有id和文件名分别串起来,而不是一一配对。咱们用JMESPath的map函数就能解决这个问题,它可以遍历数组里的每一项,单独处理每个附件的URL拼接。

正确的JMESPath表达式

{
  processId: key,
  attachments: map(&join('', ['https://example.com/files/', @.id, '/', @.filename]), fields.attachment)
}

关键逻辑说明

  • map(&..., fields.attachment):遍历fields.attachment数组中的每一个附件对象,对每个对象执行&后面的拼接逻辑
  • @在map的上下文里代表当前正在处理的那个附件对象,所以@.id就是当前附件的ID,@.filename就是它的文件名
  • 对每个附件,用join把URL前缀、ID、文件名拼接成完整的URL,最终会自动生成一个URL数组

实际运行结果

把这个表达式用到你的原始JSON上,就能得到你想要的目标结构:

{
  "processId": "processId-29231",
  "attachments": [
    "https://example.com/files/79572/File1.png",
    "https://example.com/files/74620/File2.docx",
    "https://example.com/files/79072/File3.xlsx"
  ]
}

之前的两种方式失效的原因很明确:fields.attachment[].id会返回所有ID组成的数组,fields.attachment[].filename返回所有文件名组成的数组,join操作会把这两个数组的元素各自拼接成长字符串,而不是按位置一一组合。用map就能完美解决这个逐个处理的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:04:01