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

如何在Anytime Studio编写DataWeave实现JSON数组转换

DataWeave 数组转对象转换方案

你的思路是对的,用reduce函数刚好可以实现这类「fieldName-value键值对数组转单对象」的转换,外层原有结构直接遍历保留即可,不需要额外改动。


可直接运行的完整脚本

在Anytime Studio的Transform Message组件中粘贴以下脚本即可匹配输入输出要求:

%dw 2.0
output application/json
---
{
  result: payload.result map (resItem) -> {
    Labels: resItem.Labels map (labelItem) -> {
      value: [
        labelItem.value reduce ((field, acc = {}) -> {
          (acc),
          (field.fieldName): field.value
        })
      ]
    }
  }
}

核心逻辑说明

  • 外层result、Labels两层数组通过map遍历,完全保留原有层级结构,不做字段增删
  • 针对最内层存放字段配置的value数组,用reduce做聚合处理:
    • 初始累积值设为空对象{}
    • 每遍历一个字段项,就把之前累积的对象,和以field.fieldName为键、field.value为值的新键值对合并
    • 注意动态键外层必须加括号(field.fieldName),这是DataWeave的固定语法,用来识别变量作为键名
  • 聚合完成的单对象外层包一层数组,匹配输出结构中value字段为数组的要求

适配说明

这个脚本没有硬编码firstName/lastName这类固定字段名,后续如果内层数组新增了其他fieldName配置项,脚本会自动把新字段合并到输出对象里,不需要额外修改。

用你提供的样例输入测试,输出结果和你给出的期望结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:03:14