How to access JSON array object in server-side script?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-09-2022 03:41 AM
Hi,
I have the following (JSON) array of objects and code (which I get from a REST API - see first block) and want to access / iterate through those items, but I am encountering some issues (see second block).
The gs.info(objComputer); gives the output: [object Object] and the gs.info('Object count: ' + objComputer.length); gives the output: Object count: undefined.
var computer = {"computer":[{"Body":{"BiosSerialNumber":"3b200898-6811-3240-a99d-9199181bf627","Manufacturer":"IBM","Name":"vmw0124"}},{"Body":{"BiosSerialNumber":"925a33b5-f18c-39ca-860d-fdecaba9f150","Manufacturer":"IBM","Name":"vmw0125"}}]};
var strComputer = JSON.stringify(computer, null, 2); // Convert outputs to string
gs.info('String count: ' + strComputer.length);
gs.info(strComputer);
var objComputer = JSON.parse(strComputer); // Convert outputs string to an object
gs.info(objComputer);
gs.info('Object count: ' + objComputer.length);
for (var i = 0; i < objComputer.length; i++) {
gs.info('Record - ' + i);
gs.info(computer[i].Name);
gs.info(computer[i].BiosSerialNumber);
}
*** Script: String count: 346
*** Script: {
"computer": [
{
"Body": {
"BiosSerialNumber": "3b200898-6811-3240-a99d-9199181bf627",
"Manufacturer": "IBM",
"Name": "vmw0124"
}
},
{
"Body": {
"BiosSerialNumber": "925a33b5-f18c-39ca-860d-fdecaba9f150",
"Manufacturer": "IBM",
"Name": "vmw0125"
}
}
]
}
*** Script: [object Object]
*** Script: Object count: undefined
What is the correct way to access and loop through the data?
Best regards
- Labels:
-
Script Debugger
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-09-2022 06:45 AM
Hi Ankur and others,
When trying the following code in Scripts-Background, it is still giving an error. Any ideas?
(function() {
try {
var inputs = {};
inputs['skip'] = 0; // Integer
inputs['top'] = 5; // Integer
// Execute Synchronously: Run in foreground. Code snippet has access to outputs.
var result = sn_fd.FlowAPI.getRunner().action('global.snow').inForeground().withInputs(inputs).run();
var outputs = result.getOutputs();
// Get Outputs:
var str = outputs['computer']; // Array.Object
var parsedData = JSON.parse(str); // Convert outputs string to an object
gs.info('Object count: ' + parsedData.computer.length);
for (var i = 0; i < parsedData.computer.length; i++) {
gs.info(parsedData.computer[i].Body.Name);
gs.info(parsedData.computer[i].Body.BiosSerialNumber);
}
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();
Error:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-10-2022 04:25 AM
try this
(function() {
try {
var inputs = {};
inputs['skip'] = 0; // Integer
inputs['top'] = 5; // Integer
// Execute Synchronously: Run in foreground. Code snippet has access to outputs.
var result = sn_fd.FlowAPI.getRunner().action('global.snow').inForeground().withInputs(inputs).run();
var outputs = result.getOutputs();
// Get Outputs:
var str = outputs['computer']; // Array.Object
var parsedData = JSON.parse(str); // Convert outputs string to an object
gs.info('Object count: ' + parsedData.length);
for (var i = 0; i < parsedData.length; i++) {
gs.info(parsedData[i].Body.Name);
gs.info(parsedData[i].Body.BiosSerialNumber);
}
} catch (ex) {
var message = ex.getMessage();
gs.error(message);
}
})();