在 Mule 4 中匹配 Dataweave 中的数组值

Dan*_*iel 1 dataweave mule4

我正在尝试匹配有效负载中的特定值,并使用 dataweave 表达式仅返回匹配的数组值。

输入:

name: QA
Run Code Online (Sandbox Code Playgroud)

有效载荷:

{
 "kind": "drive#driveList",
 "nextPageToken": "~!!~AI9FV7TFuXfzyGg-txFqJWTa2oDXcgJ3ULdaNmst8",
 "drives": [
  {
   "kind": "drive#drive",
   "id": "0AKrgo4Gdm2hzUk9PVA",
   "name": "Dev"
  },
  {
   "kind": "drive#drive",
   "id": "0AGymmOhxiCGwUk9PVA",
   "name": "EHS Safety - Public"
  },
  {
   "kind": "drive#drive",
   "id": "0AAD3jo6D8PX-Uk9PVA",
   "name": "Job Master folder"
  },
  {
   "kind": "drive#drive",
   "id": "0AI1WUfEk8cWkUk9PVA",
   "name": "MSTemplates"
  },
  {
   "kind": "drive#drive",
   "id": "0AC_FdkeL63mHUk9PVA",
   "name": "QA"
  }
 ]
}
Run Code Online (Sandbox Code Playgroud)

预期的输出应该像输出:

{
   "kind": "drive#drive",
   "id": "0AC_FdkeL63mHUk9PVA",
   "name": "QA"
  }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

小智 5

您可以使用以下 dataweave 表达式:

%dw 2.0
output application/json
---
payload.drives filter ((item, index) -> item.name == 'QA')
Run Code Online (Sandbox Code Playgroud)

输出:

[
  {
    "kind": "drive#drive",
    "id": "0AC_FdkeL63mHUk9PVA",
    "name": "QA"
  }
]
Run Code Online (Sandbox Code Playgroud)

请注意,生成的有效负载将是一组“驱动器”项。