我有一个名为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”为空。上面是否需要任何修改?
谢谢。
如果您知道sessionVar具有相同的结构,这将是最简单的方法:
%dw 1.0
%output application/json
---
{
Id: sessionVars.varIP1.abc.Id
}
没有理由放default null
。如果找不到ID,则为null。如果您想默认为""
,那会更有意义。