#dataweave
Вопрос:
У меня есть две входные полезные нагрузки, и я хочу объединить объект JSON внутри другого вложенного объекта JSON с определенным объектом. Ожидаемый результат-объединить ввод 2 с вводом 1 в разделе «Response_Data».
Я попытался, но смог объединить ввод 2 в конце, но не смог добавить его в «Response_Data».
Кто-нибудь может помочь мне написать код dataweave?
Вход 1:
[{
"Org_Response": {
"Request_Criteria": {
"Org_Type_Reference": {
"ID": {
"type": "Org_Type",
"text": "Business_Unit"
}
},
"Include_Inactive": "0"
},
**"Response_Data"**: {
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "999-99-FD"
}
},
"Org_Data": {
"Reference_ID": "999-99-FD",
"Name": "Management"
}
}
}
}
}]
Вход 2:
{
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "90000"
}
},
"Org_Data": {
"Reference_ID": "90000",
"Name": "TAXES"
}
}
}
Ожидаемые результаты:
[{
"Org_Response": {
"Request_Criteria": {
"Org_Type_Reference": {
"ID": {
"type": "Org_Type",
"text": "Business_Unit"
}
},
"Include_Inactive": "0"
},
**"Response_Data"**: {
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "999-99-FD"
}
},
"Org_Data": {
"Reference_ID": "999-99-FD",
"Name": "Management"
}
},
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "90000"
}
},
"Org_Data": {
"Reference_ID": "90000",
"Name": "TAXES"
}
}
}
}
}]
Заранее спасибо
Ответ №1:
Для этого есть 2 варианта, но лучше повторить первый ввод, а затем добавить второй ввод соответственно, но вы можете попробовать сделать это ниже —
Первый DW —
%dw 2.0
output application/json
var input1=[{
"Org_Response": {
"Request_Criteria": {
"Org_Type_Reference": {
"ID": {
"type": "Org_Type",
"text": "Business_Unit"
}
},
"Include_Inactive": "0"
},
"Response_Filter": {
"Page": "1",
"Count": "999"
},
"**Response_Data**": {
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "999-99-FD"
}
},
"Org_Data": {
"Reference_ID": "999-99-FD",
"Name": "Management"
}
}
}
}
}]
var input2= [{
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "90000"
}
},
"Org_Data": {
"Reference_ID": "90000",
"Name": "TAXES"
}
}
}]
---
Org_Response :
([input1[0].Org_Response - "**Response_Data**"]
(input1.Org_Response."**Response_Data**" input2))
Второй DW —
%dw 2.0
output application/json
var input1=[{
"Org_Response": {
"Request_Criteria": {
"Org_Type_Reference": {
"ID": {
"type": "Org_Type",
"text": "Business_Unit"
}
},
"Include_Inactive": "0"
},
"Response_Filter": {
"Page": "1",
"Count": "999"
},
"**Response_Data**": {
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "999-99-FD"
}
},
"Org_Data": {
"Reference_ID": "999-99-FD",
"Name": "Management"
}
}
}
}
}]
var input2= [{
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "90000"
}
},
"Org_Data": {
"Reference_ID": "90000",
"Name": "TAXES"
}
}
}]
---
Org_Response : input1.Org_Response map {
($ mapObject ((value, key, index) ->
{
((key) : value) if (key as String != "**Response_Data**"),
((key) : [value] input2) if (key as String == "**Response_Data**")
}
))
}
Ответ №2:
Скрипт
%dw 2.0
output application/json
var inp2= {
"Org": {
"Reference": {
"ID": {
"type": "Business_Unit_Reference_ID",
"text": "90000"
}
},
"Org_Data": {
"Reference_ID": "90000",
"Name": "TAXES"
}
}
}
var respData = payload.Org_Response."**Response_Data**"
var respDataNew = respData inp2
---
[Org_Response: payload[0].Org_Response - "**Response_Data**"
{
"**Response_Data**": respDataNew
}]