在Tivoli Directory Integrator V7.1.1中处理多值JSON响应
Handle multi valued JSON response in Tivoli Directory Integrator V7.1.1
我已经做了研究,找不到任何接近我想要的答案。因此启动了一个新线程。
我试图使用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"
}
如何获取所有日志文件的数组或列表?我们衷心感谢在这方面提供的任何帮助。
感谢和问候,高拉夫。
jsobj
变量引用了一个数组,因此在访问包含对象的属性之前,您需要直接对其应用索引。例如jsobj[i].i.d.
在上面的示例脚本中,创建了一个名为"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
我没有使用过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);
相关文章:
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 使用Backbone.js访问JSON响应的部分
- 不需要的JSON响应
- 跨多个域的json响应
- 将对Ajax PUT的json响应重定向到要由EL解析的JSP中
- handler没有为JSON响应正确填充模板
- 如何在phonegap应用程序中处理Ajax json响应
- 将JSON响应放入var中并输出
- 如何使用AngularJS将if语句conditon与json响应一起使用
- JS-通用解析JSON响应
- 将json响应格式化为父级和子级
- 从 JSON 响应解析数据
- 单个和多个 JSON 响应
- 将日期作为从 Web API 到 angularJS 的 json 响应
- 在 JSX Render for React.js 中遍历 JSON 响应
- 使用 JavaScript 从 URL 获取 JSON 响应
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- 生成动态json响应的Javascript
- 如何将json响应的一部分转换为map