【问题标题】:Filter an Array of Object in DataWeave use for Mulesoft在用于 Mulesoft 的 DataWeave 中过滤对象数组
【发布时间】:2022-11-28 19:17:27
【问题描述】:

任何人都可以让我知道如何转换这个输入 json 我已经尝试过以下转换但没有成功。

我尝试使用过滤器函数和 groupBy 函数,但是对于多输出,它没有通过测试用例。

尝试过这种方法 `

%dw 2.0
output application/json
---
payload.Bd map (val,index) ->{
    "d23": val,
    "lt":(payload.output2 filter(payload.Bd contains val) map(Value) -> 
    {
        Val34: Value.PId
        }
    )
         
}

input -

[
  {
    "Val34": "968",
    "d23": "Y1"
  },
  {
    
    "Val34": "958",
    "d23": "Y2"
  },
  {
    
    "Val34": "951",
    "d23": "Y2"
  }
]

expected output -

[
  {
    "d23": "Y1",
    "lt": [
      {
        "Val34": "968"
      }
    ]
  },
  {
    "d23": "Y2",
    "lt": [
      {
        "Val34": "958"
      },
      {
        "Val34": "951"
      }
    ]
  }
]

`

【问题讨论】:

  • 该问题应该包含有关预期输出的更多信息。据我推断,您希望根据 d23 值分组获得 Val34 值。
  • 它总是Val34还是也可以是Van<other digits>

标签: transform dataweave mulesoft


【解决方案1】:

按 d23 值分组并映射所有其余部分:

%dw 2.0
output application/json
---
payload groupBy ((item, index) -> item.d23) pluck {
    d23: $[0].d23,
    lt: ($.Val34 map (l,indOfl) -> {Val34: l})
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多