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

DataWeave代码优化:处理目标API无rows返回场景

解决DataWeave中目标API无rows字段时的响应生成问题

需求回顾

需要将输入负载数组与目标API的输出负载通过id字段匹配,生成带状态的最终响应:

  • 当API返回包含rows字段时,按原逻辑匹配每个输入id的处理状态
  • 当API无rows字段(全错误场景)时,为每个输入id添加API返回的统一错误信息

优化后的DataWeave代码

%dw 2.0
output application/json
// 替换为你实际存储目标API响应的变量(比如vars.apiResponse或payload)
var apiResponse = vars.apiResponse default {}

// 构建结果映射:有rows则生成id->处理结果的映射,无rows则生成错误信息对象
var resultLookup = if (apiResponse.rows != null and sizeOf(apiResponse.rows) > 0)
    // 将rows数组转为id为键的映射表,快速匹配
    apiResponse.rows groupBy $.id mapObject ((val, key) -> (key): val[0])
else
    // 提取API返回的错误信息,默认值处理避免空指针
    {
        status: "FAILED",
        errorCode: apiResponse.errorCode default "UNKNOWN_ERROR",
        errorMessage: apiResponse.errorMessage default "请求处理失败"
    }
---
// 遍历输入负载,为每个id生成带状态的响应
payload map (item) -> {
    id: item.id,
    // 根据resultLookup的类型决定返回成功匹配结果还是错误信息
    (if (resultLookup.errorCode != null) 
        resultLookup
    else 
        // 匹配成功则返回对应结果,未匹配则返回默认失败信息
        resultLookup[item.id] default {
            status: "FAILED",
            errorMessage: "未找到对应处理记录"
        })
}

代码关键说明

  1. 空值安全处理:用default {}确保API响应为空时不会报错,同时给错误字段设置默认值,避免缺失字段导致的异常
  2. 分支逻辑清晰:通过判断rows的存在性和长度,区分正常响应和全错误场景
  3. 高效匹配:正常场景下将rows转成id为键的映射表,避免遍历查找,提升性能
  4. 统一输出结构:无论哪种场景,最终输出的每个项都包含id和状态相关字段,保证响应结构一致性

测试示例

场景1:目标API返回全错误(无rows)

输入负载:

[
  {"id": "101"},
  {"id": "102"}
]

API响应:

{
  "errorCode": "503",
  "errorMessage": "服务暂时不可用"
}

最终输出:

[
  {
    "id": "101",
    "status": "FAILED",
    "errorCode": "503",
    "errorMessage": "服务暂时不可用"
  },
  {
    "id": "102",
    "status": "FAILED",
    "errorCode": "503",
    "errorMessage": "服务暂时不可用"
  }
]

场景2:目标API返回正常rows数据

输入负载同场景1
API响应:

{
  "rows": [
    {"id": "101", "status": "SUCCESS", "result": "处理完成"}
  ]
}

最终输出:

[
  {
    "id": "101",
    "status": "SUCCESS",
    "result": "处理完成"
  },
  {
    "id": "102",
    "status": "FAILED",
    "errorMessage": "未找到对应处理记录"
  }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:20:27