【问题标题】:Many to one JSON to JSON transformation多对一 JSON 到 JSON 转换
【发布时间】:2018-07-03 06:20:24
【问题描述】:

我需要将一组传入的 json 转换为输出的通用结构。传入的json结构如下

输入 JSON 1 { "JR_ID": "1", “JR_Data”:“一些文字” }

输入 JSON 2 { “TA_ID”:“1”, "TA_Data": "一些文字" }

输入 JSON 3

{ "IM_ID": "1", "IM_Data": "一些文字" }

..还有更多

输出的JSON结构如下

输出结构

{ "OBJECT_ID": "1", "OBJECT_Data": "一些文本" }

输入的 json 会一次一个地出现,任务是将传入 JSON 的 ID 字段动态映射到输出 JSON 的 OBJECT_ID 和数据字段。

我该如何使用 mule 表达式语言或 dataweave 来实现这一点?还有其他解决方案吗?

非常感谢任何帮助。

【问题讨论】:

  • 您是否在 for-each 范围内执行此操作,并添加到结果中?

标签: mule dataweave


【解决方案1】:

鉴于您的输入似乎通过*_ID*_Data 映射到您的输出,这个脚本应该可以帮助您:

%dw 1.0
%output application/json
---
payload pluck ($$ as :string) reduce ((key, out={}) ->
  key match {
    k when key contains "ID"   -> out ++ {"OBJECT_ID":   payload[k]},
    k when key contains "Data" -> out ++ {"OBJECT_Data": payload[k]},
    default                    -> out  
  }
)

首先获取输入对象中所有键的列表 -- payload pluck ($$ as :string)。演员as :string 是为了让我们稍后可以测试该键是否包含某个子字符串。然后我们使用reduce 来构建您要查找的输出对象,方法是在输入键包含"ID" 时将OBJECT_ID key:value 对添加到输出对象,并将OBJECT_Data key:value 对添加到当key包含"Data"时的输出对象。

【讨论】:

    【解决方案2】:

    您可以使用以下 dataweave 语法动态映射 JSON 输入:

    %dw 1.0
    %output application/json
    ---
    {
        OBJECT_ID : payload[0],
        OBJECT_Data : payload[1]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-29
      • 2013-07-16
      • 2018-04-16
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多