多对一 JSON 到 JSON 转换

Many to one JSON to JSON transformation

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

输入JSON1 { "JR_ID": "1", "JR_Data": "some text" }

输入JSON2 { "TA_ID": "1", "TA_Data": "some text" }

输入JSON3

{ "IM_ID": "1", "IM_Data": "some text" }

..还有更多

输出JSON结构如下

输出结构

{ "OBJECT_ID": "1", "OBJECT_Data": "some text" }

输入 json 一次一个,任务是动态映射传入 JSON 的 ID 字段到输出 JSON 的 OBJECT_ID 和数据相同场.

我如何为此使用 mule 表达式语言或数据编织?还有其他解决方案吗?

非常感谢任何帮助。

您可以使用以下数据编织语法动态映射 JSON 输入:

%dw 1.0
%output application/json
---
{
    OBJECT_ID : payload[0],
    OBJECT_Data : payload[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)。 cast as :string 是为了让我们稍后可以测试键是否包含某个子字符串。然后我们使用 reduce 来构建您要查找的输出对象,方法是在输入键包含 "ID" 时向输出对象添加 OBJECT_ID key:value 对并添加一个OBJECT_Data key:value 当键包含 "Data".

时对输出对象