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

问题描述 投票:2回答:1

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

{abc={FedId=abc, Id=01FcLA, type=User, Profile={Id=02EmQA, type=Profile, Name=Analyst}}}

我有兴趣使用以下给出的函数从上方提取第一个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”为空。上面是否需要任何修改?

谢谢。

mule mule-studio anypoint-studio dataweave mulesoft
1个回答
0
投票

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

%dw 1.0
%output application/json
---
{
    Id: sessionVars.varIP1.abc.Id
}

没有理由放default null。如果找不到ID,则为null。如果您想默认为"",那会更有意义。

© www.soinside.com 2019 - 2024. All rights reserved.