Dataweave:获取 com.mulesoft.weave.model.structure.QualifiedName 而不是 String

Dataweave: Getting com.mulesoft.weave.model.structure.QualifiedName instead of String

我有一个数据库查询 returns 数据如下:

"LABEL","CONTAINER_ID","STATUS"
"14.JW24","1006063116","F"
"14.JW25","1006063116","F"
"1.JW2M","9999997","R"
"8.282","9999999","R"
"4.135","9999999","F"
"6.43","9999999","F"
"11.12","9999999","R"
"14.JW12","1006063073","R"
"14.JW13","1006063073","R"
"14.JW10","1006063068","F"

我正在使用 Dataweave 创建状态为 "F" 的不同 container_id 值的列表。类似于:

["1006063116", "9999999", "1006063068"]

这是我的数据编织脚本:

%dw 1.0
%output application/java
---
payload filter $.STATUS == "F" groupBy $.CONTAINER_ID pluck $$

除了我得到一个 com.mulesoft.weave.model.structure.QualifiedName 对象列表而不是字符串列表之外,这工作正常。

如何修改 dataweave 脚本以获取字符串,或者如何从 QualifiedName 对象获取字符串值?我试过在对象上调用 toString() 和 getName() 。前者没有给出我需要的值,后者不起作用。

只需将生成的元素转换为字符串,如下所示:

%dw 1.0
%output application/java
---
payload filter $.STATUS == "F" groupBy $.CONTAINER_ID pluck $$ as :string

重要的部分是 as :string

替代解决方案:您可以使用 distinctBy 关键字来获得类似的结果并摆脱 groupBy+pluck:

%dw 1.0
%output application/java
---
(payload filter $.status == "F").container_id distinctBy $