Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mule 使用dataweave显示嵌套集合_Mule_Dataweave - Fatal编程技术网

Mule 使用dataweave显示嵌套集合

Mule 使用dataweave显示嵌套集合,mule,dataweave,Mule,Dataweave,我想显示以下输出(json),输入来自pl/sql游标, 我的问题是: 如何显示此输出 要获得此输出,需要什么样的输入 如何使用personId键组合两个光标结果 多谢各位 输入: personCursor: [{personName=a,personId=1}, {personName=b,personId=2}] *contactCursor* [{personId=1, firstName==x, phone=123}, {personId=1, firstName==y, phone=

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

  • 如何显示此输出
  • 要获得此输出,需要什么样的输入
  • 如何使用
    personId
    键组合两个光标结果
  • 多谢各位

    输入:

    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
                    },
                ]
      }
    ]
    

    为了获得输出,您必须使用脚本,例如

    %dw 1.0
    %output application/json
    %var contactLookup = payload groupBy $.personId
    ---
    flowVars.PersonCursor map {
        ($),
        contacts : contactLookup[$.personId]
    }
    
    其中有效载荷为
    contactCursor
    flowVars.PersonCursor
    PersonCursor
    。给定的代码将使用Hashmap查找组合数据。在pl/sql游标的情况下,输入将是java


    HTH

    另一种方法是,您可以使用2个映射运算符并在数组中循环,构造输出Json以及过滤条件,将联系人与正确的人关联起来。 应该是下面几行的内容:

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

    contactCursor和flowVars.PersonCursor的数据类型是什么?我将两者都设置为json,它只适用于第一个PersonCursor记录,获得以下输出:{“输出”:[{“personName”:“a”,“personId”:1,“联系人”:[{“personId”:1,“firstName”:“x”,“phone”:123},{“personId”:1,“firstName”:“y”,“phone”:234}]},{“personName”:“b”,“personId”:2,“contacts”:null}]}Json以及java都可以。但如果您得到的响应是迭代器,则将代码更改为
    %var contactLookup=payload map$groupBy$。personId