Mule 使用DW 1.0函数从数组中提取字段

Mule 使用DW 1.0函数从数组中提取字段,mule,mule-studio,anypoint-studio,dataweave,mulesoft,Mule,Mule Studio,Anypoint Studio,Dataweave,Mulesoft,我有一个名为varIP1的会话变量,它的值如下:(它的mime类型是application/java) 我感兴趣的是使用下面给出的函数从上面提取第一个Id(01FcLA): %dw 1.0 %output application/json %var myLib = readUrl("classpath://dwlib/my-global-functions.wev", "application/dw") --- { "Id": (myLib.idLookup(sessionVars.v

我有一个名为varIP1的会话变量,它的值如下:(它的mime类型是application/java)

我感兴趣的是使用下面给出的函数从上面提取第一个Id(01FcLA):

%dw 1.0
%output application/json
%var myLib = readUrl("classpath://dwlib/my-global-functions.wev", "application/dw")
---
{

    "Id": (myLib.idLookup(sessionVars.varIP1 ,$.Id,"Id") default null)
}
我使用的全局函数是:

%function validateLookup(lookupArray, key) 'true' when (lookupArray != null and IsNull(key) == 'false' and lookupArray[key] != null) otherwise 'false'
%function idLookup(lookupArray,key,value) (lookupArray[key][0][value] default '') as :string when (validateLookup(lookupArray,key) == 'true')  otherwise null
在上面的代码中,“Id”是空的。上面需要修改吗


谢谢。

如果您知道您的sessionVar将具有相同的结构,那么这将是最简单的方法:

%dw 1.0
%output application/json
---
{
    Id: sessionVars.varIP1..Id
}
更新,因为abc不能硬编码


没有理由将
默认值设为null
。如果找不到Id,它将为空。如果您想将默认值设置为
,这会更有意义。

什么是
$.Id
?这不应该在关闭之外起作用。与这个问题无关,为什么函数使用字符串文字'true'和'false'而不是布尔值true和false?谢谢你的回答。你能帮我更正一下密码吗?我需要从sessionVars数组中检索Id值。我也可以把函数改成布尔值。谢谢你的回复。数组结构将相同,但值不同。“abc”不能硬编码。
%dw 1.0
%output application/json
---
{
    Id: sessionVars.varIP1..Id
}