我需要将一组如下传入的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,并将其与数据字段相同。
如何为此使用m子表达语言或dataweave?还有其他解决方案吗?
非常感谢您的帮助。
答案 0 :(得分: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
来构建所需的输出对象,方法是在输入键包含OBJECT_ID
时向输出对象添加一个"ID"
key:value对,并添加一个{{ 1}}键:键包含OBJECT_Data
时输出对象的值对。
答案 1 :(得分:0)
您可以使用以下dataweave语法动态映射JSON输入:
%dw 1.0
%output application/json
---
{
OBJECT_ID : payload[0],
OBJECT_Data : payload[1]
}