Mule Dataweave(嵌套)映射条件映射 案例

Mule Dataweave(嵌套)映射条件映射 案例,mule,dataweave,Mule,Dataweave,我有一个json对象(从excell文件中导入,之后也需要将其格式化为json对象)。所以我根本不能弄乱结构 输入由一个json格式的对象和工作表组成,每个工作表都是一个对象数组 当sheetnumber等于'append'对象中的kwadrantcode时,我想将另一个对象(变量'append')添加到数组中(作为最后一项) 输入1 有效载荷 { "(sheet)1": [ { "kwadrantId": 1.0, "Team": "blauw1",

我有一个json对象(从excell文件中导入,之后也需要将其格式化为json对象)。所以我根本不能弄乱结构

输入由一个json格式的对象和工作表组成,每个工作表都是一个对象数组

当sheetnumber等于'append'对象中的kwadrantcode时,我想将另一个对象(变量'append')添加到数组中(作为最后一项)

输入1 有效载荷

    {
  "(sheet)1": [
    {
      "kwadrantId": 1.0,
      "Team": "blauw1",
      "timestamp": "2019-09-26T16:37:54",
      "controlecode": 12431
    }
  ],
  "(sheet)2": [
    {
      "kwadrantId": 2.0,
      "Team": "rood1",
      "timestamp": "2019-09-26T16:37:54",
      "controlecode": 81243
    },
    {
      "kwadrantId": 2.0,
      "Team": "blauw2",
      "timestamp": "2019-09-26T18:00:54",
      "controlecode": 67676
    }
  ]
}
迄今为止的守则 这段代码成功地将对象附加到正确位置的数组中。 这里的问题是,最后一部分(映射目标)似乎不允许条件映射。 因此,它总是将它插入到每个列表的末尾,而不仅仅是我希望它结束的地方

[
  [
    {
      "kwadrantId": 1.0,
      "Team": "blauw1",
      "timestamp": "2019-09-26T16:37:54",
      "controlecode": "12431"
    },
    {
      "kwadrant": "2",
      "controlecode": "22222",
      "kleur": "blauw",
      "subteam": "1",
      "form_id": "83177",
      "submit": "Claim"
    }
  ],
  [
    {
      "kwadrantId": 2.0,
      "Team": "rood1",
      "timestamp": "2019-09-26T16:37:54",
      "controlecode": "12431"
    },
    {
      "kwadrantId": 2.0,
      "Team": "blauw2",
      "timestamp": "2019-09-26T18:00:54",
      "controlecode": 67676.0
    },
    {
      "kwadrant": "2",
      "controlecode": "22222",
      "kleur": "blauw",
      "subteam": "1",
      "form_id": "83177",
      "submit": "Claim"
    }
  ]
]
我试过的几件事
稍后我会担心如何将“append”var格式化到正确的结构中,只是将其放在正确的位置是我似乎无法工作的问题。

我能想到的最简单的方法是使用该函数

%dw 2.0
输出应用程序/json
变量附加=
{
“kwadrant”:“2”,
“控制代码”:“22222”,
“kleur”:“blauw”,
“子团队”:“1”,
“表格id”:“83177”,
“提交”:“索赔”
}
数字(页码:键)=
(pageName作为字符串匹配/\(sheet\)([0-9]+)/)[1]
---
有效负载映射对象((值、键、索引)->do{
if(extractNumber(key)=append.kwadrant)
{(键):值
[
  [
    {
      "kwadrantId": 1.0,
      "Team": "blauw1",
      "timestamp": "2019-09-26T16:37:54",
      "controlecode": "12431"
    },
    {
      "kwadrant": "2",
      "controlecode": "22222",
      "kleur": "blauw",
      "subteam": "1",
      "form_id": "83177",
      "submit": "Claim"
    }
  ],
  [
    {
      "kwadrantId": 2.0,
      "Team": "rood1",
      "timestamp": "2019-09-26T16:37:54",
      "controlecode": "12431"
    },
    {
      "kwadrantId": 2.0,
      "Team": "blauw2",
      "timestamp": "2019-09-26T18:00:54",
      "controlecode": 67676.0
    },
    {
      "kwadrant": "2",
      "controlecode": "22222",
      "kleur": "blauw",
      "subteam": "1",
      "form_id": "83177",
      "submit": "Claim"
    }
  ]
]
honestly, i think i've tried everything the past two hours, but here are a few i can think of out of the top of my head.

++ [append] if (true) 

(if true )++ [append]

payload pluck($) map (sheet, sheetnumber)-> (sheet map (claim, claimcounter) -> claim)((if true) ++ [append])

and most variations i can think of with brackets
%dw 2.0
output application/json

var append =   
    {
    "kwadrant": "2",
    "controlecode": "22222",
    "kleur": "blauw",
    "subteam": "1",
    "form_id": "83177",
    "submit": "Claim"
    }

fun extractNumber(pageName: Key) = 
     (pageName as String match  /\(sheet\)([0-9]+)/)[1]    
---
payload mapObject ((value, key, index) -> do {
        if(extractNumber(key) == append.kwadrant)
            {(key): value << append}
         else
            {(key): value}
})