【问题标题】:How to combine a JSON object inside another nested JSON object using Dataweave 2.0如何使用 Dataweave 2.0 将 JSON 对象组合到另一个嵌套的 JSON 对象中
【发布时间】:2021-11-10 07:43:05
【问题描述】:

我有两个输入负载,我想将另一个嵌套 JSON 对象中的 JSON 对象组合到特定对象。 预期的输出是将输入 2 与“Response_Data”下的输入 1 结合起来。

我尝试过,但我可以在最后合并输入 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"
                }
            }
        }
    }
}]

提前致谢

【问题讨论】:

    标签: dataweave


    【解决方案1】:

    有两个选项可以做到这一点,但最好是遍历第一个输入,然后相应地添加第二个输入,但您可以暂时尝试以下方法 -

    第一个 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
      }]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多