在Tivoli Directory Integrator V7.1.1中处理多值JSON响应

时间:2016-08-02 06:29:57

标签: javascript 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"
}

如何获取所有日志文件的数组或列表?对此方面的任何帮助表示衷心的感谢。

谢谢和问候, 拉夫。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

在上面的示例脚本中,一个名为&#39;的新数组记录了&#39;创建并将所有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