【问题标题】:Merge Array object elements using comparison使用比较合并 Array 对象元素
【发布时间】:2023-02-08 22:08:16
【问题描述】:

我们有一个要求,我们需要使用元素比较将数据从另一个数组对象输入到一个空的 json 数组元素中。

为了更好地理解,下面提到了示例有效负载和所需的结果。

有效载荷1:(输入有效载荷)

{
    "data": [
            {
            "name":"ram",
            "eno":"100",
            "dept":"Sales",
            "sal":null
            },
            {
            "name":"gopal",
            "eno":"101",
            "dept":"Sales",
            "sal":null
            },
            {
            "name":"hari",
            "eno":"102",
            "dept":"Sales",
            "sal":null
            },
            {
            "name":"pankaj",
            "eno":"103",
            "dept":"Sales",
            "sal":null
            },
            {
            "name":"raju",
            "eno":"104",
            "dept":"Sales",
            "sal":null
            }
            ]
}

Payload2:(来自第三方网络服务的响应)

{
    "data": [
        {
            "eno": "100",
            "sal": 2000
        },
        {
            "eno": "101",
            "sal": 2300
        },
        {
            "eno": "102",
            "sal": 1800
        },
        {
            "eno": "104",
            "sal": 2500
        }
    ]
}

要求的结果:

{
    "data": [
            {
            "name":"ram",
            "eno":"100",
            "dept":"Sales",
            "sal":2000
            },
            {
            "name":"gopal",
            "eno":"101",
            "dept":"Sales",
            "sal":2300
            },
            {
            "name":"hari",
            "eno":"102",
            "dept":"Sales",
            "sal":1800
            },
            {
            "name":"raju",
            "eno":"104",
            "dept":"Sales",
            "sal":2500
            }
            ]
}

................................................... .....................

【问题讨论】:

    标签: wso2 wso2-esb wso2-enterprise-integrator


    【解决方案1】:

    这是仅使用突触就可以做到这一点的方法。我硬编码了第二个响应。

    <?xml version="1.0" encoding="UTF-8"?>
    <api context="/HelloWorld" name="HelloWorld" xmlns="http://ws.apache.org/ns/synapse">
        <resource methods="POST">
            <inSequence>
                <enrich>
                    <source clone="true" type="body"/>
                    <target property="inputBody" type="property"/>
                </enrich>
                <payloadFactory media-type="json">
                    <format>
                        {
                          "data": [
                              {
                                  "eno": "100",
                                  "sal": 2000
                              },
                              {
                                  "eno": "101",
                                  "sal": 2300
                              },
                              {
                                  "eno": "102",
                                  "sal": 1800
                              },
                              {
                                  "eno": "104",
                                  "sal": 2500
                              }
                          ]
                      }
                    </format>
                    <args/>
                </payloadFactory>
                <foreach expression="json-eval($.data)" id="foreach_1">
                    <sequence>
                        <property expression="json-eval($.eno)" name="eno" scope="default" type="STRING"/>
                        <property expression="json-eval($.sal)" name="sal" scope="default" type="STRING"/>
                        <enrich>
                            <source clone="true" property="inputBody" type="property"/>
                            <target type="body"/>
                        </enrich>
                        <enrich>
                            <source clone="true" property="sal" type="property"/>
                            <target xpath="//data[eno=$ctx:eno]/sal"/>
                        </enrich>
                        <enrich>
                            <source clone="true" type="body"/>
                            <target property="inputBody" type="property"/>
                        </enrich>
                    </sequence>
                </foreach>
                <enrich>
                    <source clone="true" property="inputBody" type="property"/>
                    <target type="body"/>
                </enrich>
                <property name="messageType" scope="axis2" type="STRING" value="application/json"/>
                <respond/>
            </inSequence>
            <outSequence/>
            <faultSequence/>
        </resource>
    </api>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2014-11-02
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 2015-01-05
      相关资源
      最近更新 更多