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

基于共同ID过滤两个Payload数组失败,如何实现动态匹配?

解决Payload动态匹配的问题

首先你的代码和表达式存在几处需要修正的问题,以下是具体的解决方案:

1. 修复Payload的语法错误

原payload2里有两处语法问题会导致解析失败:

  • 字符串值Boston未加引号,需改为"Boston"
  • 以0开头的数字0986在JSON/JS中会被识别为无效八进制数,建议改为字符串类型"id": "0986"或去掉前导0写成id: 986

修正后的完整Payload代码:

var payload1 = [{
"name": "kate",
"number1": 12345
}]

var payload2 = [
{
"nameD": "kate P ",
"id": 12345,
"addres": "Boston"
},
{
"nameD": "John P ",
"id": 986,
"address" : "New Jork"
}
]

2. 修正DataWeave过滤表达式

你的表达式核心问题是**payload1是数组结构**,直接用payload1."number1"无法正确获取目标值,必须先定位到数组内的第一个对象,再提取number1属性。

修正后的DataWeave表达式:

%dw 2.0
output application/json
---
payload2 filter ($.id == payload1[0].number1) 
map {
    id: $.id,
    nameD: $.nameD
}

效果说明

  • payload1[0].number1 准确获取到第一个Payload里的number1值(12345)
  • filter 遍历payload2,筛选出id与目标值匹配的条目
  • map 提取筛选结果中需要的id和nameD字段

运行后会输出正确结果:

[
  {
    "id": 12345,
    "nameD": "kate P "
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:01:03