2016-08-02 42 views
0

我已经完成了我的研究,找不到任何接近我所寻找的答案的答案。因此启动一个新的线程。在Tivoli Directory Integrator V7.1.1中处理多值JSON响应

我想使用Tivoli Directory Integrator(TDI)列出装配线中的所有WebSEAL日志文件,然后打算仅将日志名称用作后续函数的输入。 TDI中的代码是用JavaScript编写的。

但是,我是JSON的新手,不知道如何处理多值响应。

我的反应看起来像以下:

resultsEntry = 
"message": "[{"id":"msg__webseald-int-dev.log","version":1470033259,"file_size":137647}, {"id":"request.log","version":1469425478,"file_size":104836}, {"id":"agent.log","version":1462348902,"file_size":0}, {"id":"config_data__int-dev-webseald-abcd.log","version":1470033258,"file_size":664433}, {"id":"referer.log","version":1462348902,"file_size":0}]", 
"code": 200 

我需要包含在所有的 “ID” 属性值。我试过以下,我得到预期的长度,但不是对象。

var jsobj = fromJson(resultsEntry.getString("message")); 
task.logmsg("jsobj is " + jsobj); 
task.logmsg("jsobj length is " + jsobj.length); 

This code snippet results in 

jsobj is [object Object],[object Object],[object Object],[object Object],[object Object] 
jsobj length is 5 

,如果我尝试以下

task.logmsg("first id is " + jsobj.id[0]); 

我得到的,

Exception occurrend while evaluating REST response com.ibm.jscript.InterpretException: Script interpreter error, line=35, col=52: 'jsobj.id' is undefined and cannot be accessed as an array 

尝试解析此JSON响应在某种程度上只返回第一组属性

var resMessage = resultsEntry.getString("message"); 
var paramEntry = system.parseObject("JSONPars", resMessage); 
task.logmsg("paramEntry is "+paramEntry); 

Above set of code snippet only prints 

paramEntry is { 
"file_size": 137647.0, 
"version": 1.470033259E9, 
"id": "msg__webseald-int-spnego-dev.log" 
} 

怎么办我得到一个数组或列表中的所有 日志文件?衷心感谢在这方面的任何帮助。

感谢和问候, Gaurav。

回答

0

请注意,您解析的JSON属性值是正确的。至于访问解析对象,上面的建议是专注的:您的jsobj变量引用了一个数组,因此您需要在访问包含对象的属性之前直接对其应用索引。例如。 jsobj [I] .ID。

在上面的示例脚本中,创建了一个名为'logs'的新数组,并将所有id值添加(推送)给它。如果你只是想再次登录这些值可以代替

logs.push(jsobj[i].id) 

task.logmsg(jsobj[i].id) 

正如我在评论中写道到我的博客,对于TDI的最佳场所(SDI)的问题是TDI论坛:

https://groups.google.com/group/ibm.software.network.directory-integrator/topics?gvc=2

希望这有助于:)

-Eddie

+0

也谢谢你让我参加TDI论坛,这非常有启发性。 –

0

我没有与Tivoli Directory Integrator V7.1.1一起工作,但我想所有你需要的是循环。

var jsobj = fromJson(resultsEntry.getString("message")), 
    logs = []; 

for (var i = 0; i < jsobj.length; i++) { 
    logs.push(jsobj[i].id); 
} 

console.log(logs); 
+0

谢谢Kison。让我试试这个,然后我可以回应它的行为。 –