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

如何使用DataWeave将给定JSON转换为指定输出结构?

DataWeave JSON字段替换实现方案

前置说明

以下实现基于符合你描述的JSON结构,先给出示例输入供参考:

{
  "editable": true,
  "sections": [
    {
      "title": "用户基础信息",
      "Content": [
        {
          "apiname": "userName",
          "text": {
            "userName": "李小明",
            "userAge": 32,
            "userPhone": "138xxxx1234"
          }
        },
        {
          "apiname": "userAge",
          "text": {
            "userName": "李小明",
            "userAge": 32,
            "userPhone": "138xxxx1234"
          }
        }
      ]
    },
    {
      "title": "用户联系信息",
      "Content": [
        {
          "apiname": "userPhone",
          "text": {
            "userName": "李小明",
            "userAge": 32,
            "userPhone": "138xxxx1234"
          }
        }
      ]
    }
  ]
}

转换代码(DataWeave 2.0)

%dw 2.0
output application/json
---
{
  editable: payload.editable,
  sections: payload.sections map (sectionItem) -> {
    title: sectionItem.title,
    Content: sectionItem.Content map (contentItem) -> {
      (contentItem - "text"),
      text: contentItem.text[contentItem.apiname]
    }
  }
}

转换后输出示例

{
  "editable": true,
  "sections": [
    {
      "title": "用户基础信息",
      "Content": [
        {
          "apiname": "userName",
          "text": "李小明"
        },
        {
          "apiname": "userAge",
          "text": 32
        }
      ]
    },
    {
      "title": "用户联系信息",
      "Content": [
        {
          "apiname": "userPhone",
          "text": "138xxxx1234"
        }
      ]
    }
  ]
}

扩展说明

  • 代码默认保留Content数组对象中除text外的所有原有字段,无需额外适配新增字段
  • 如果apiname对应的属性在text对象中不存在,转换后text字段会返回null,可通过text: contentItem.text[contentItem.apiname] default "自定义默认值"设置兜底值
  • 代码兼容所有Mule 4.x版本的DataWeave运行环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:45:04