使用dataweave

时间:2017-02-11 18:15:19

标签: mule dataweave

我想显示以下输出(json),输入来自pl / sql游标, 我的问题:

  1. 如何显示此输出?
  2. 为了获得此输出需要什么样的输入?
  3. 如何使用personId键组合2个游标结果?
  4. 谢谢

    输入:

    personCursor: 
    [{personName=a,personId=1}, {personName=b,personId=2}]
    *contactCursor*
    [{personId=1, firstName==x, phone=123}, {personId=1, firstName==y, phone=234}, {personId=2, firstName==z, phone=345},{personId=2, firstName==w, phone=456}]
    **output:**
    [
      {
        "personName": "a",
        "personId": "1",
        "contacts": 
                [
                    {
                        "firstname": "x",
                        "phone": 123
                    },
                    {
                        "firstname": "y",
                        "phone": 234
                    },
                ]
      },
     {
        "personName": "b",
        "personId": "2",
        "contacts": 
                [
                    {
                        "firstname": "z",
                        "phone": 345
                    },
                    {
                        "lastname": "w",
                        "phone": 456
                    },
                ]
      }
    ]
    

2 个答案:

答案 0 :(得分:0)

要获得输出,您必须使用类似

的脚本
contactCursor

有效负载为flowVars.PersonCursorpersonCursor为{{1}}。给定代码将使用Hashmap查找组合数据。在pl / sql游标的情况下,输入将是java。

HTH

答案 1 :(得分:0)

另一种方法是使用2个地图运算符并循环通过数组并构造输出Json以及过滤条件以将联系人关联到正确的人。 应该是下面的内容:

PersonCursor map(v1,i1) {
   personName": $.personName,
    "personId": $.personId,
    contacts : contactCursor map {
"firstname": $.firstname,
"phone": $.phone
           } filter $.personId == v1.personId
}