Unable to loop through a JSON object in NodeJS

javascript, json, node.js

Solution

Considering your JSON example iterating over object seems irrelevant. Also there is no need to stringify data first and then parse the string.

fs.readFile('myfile.xml', function(err, data) {
  parser.parseString(data, function (err, result) {

    var jsoniem = JSON.stringify(result);
    console.log(jsoniem);

    result.BESAPI.Computer.forEach(function (el) {
      // Output arrays
      console.log(el.ID);
      console.log(el.LastReportTime);

      // Get first elements
      console.log(el.ID[0]);
      console.log(el.LastReportTime[0]);
    });

  }

  console.log('Done');
});

Problem

I have a NODEJS program that uses xml2js to convert XML file to JSON and parse it. I am then trying to loop through the json object and display the ID, LastReportTime for each of them but the output i get says undefined Output ``` 2015-02-26T18:45:35.34-0500 [App/0] OUT BESAPI 2015-02-26T18:45:35.34-0500 [App/0] OUT Computer 2015-02-26T18:45:35.34-0500 [App/0] OUT Computer:undefined 2015-02-26T18:45:35.34-0500 [App/0] OUT Done ``` NodeJS ``` var fs = require('fs'), xml2js = require('xml2js'); var parser = new xml2js.Parser(); fs.readFile('myfile.xml', function(err, data) { parser.parseString(data, function (err, result) { var jsoniem = JSON.stringify(result); console.log(jsoniem); var data = JSON.parse(jsoniem); for (var obj in data) { if (data.hasOwnProperty(obj)) { console.log(obj); console.log("\n \n"); if (obj == "BESAPI") { for (var prop in data[obj]) { console.log(prop); if (prop == "Computer") { console.log(prop + ':' + data[obj][prop].ID); console.log(prop + ':' + data[obj][prop].LastReportTime); } } } } } console.log('Done'); }); ``` Json (After the program converts from XML to JSON) ``` { "BESAPI": { "$": { "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", "xsi:noNamespaceSchemaLocation": "BESAPI.xsd" }, "Computer": [ { "$": { "Resource": "api/computer/2431038" }, "LastReportTime": [ "Thu, 26 Feb 2015 14:54:41 +0000" ], "ID": [ "2431038" ] }, { "$": { "Resource": "api/computer/16710075" }, "LastReportTime": [ "Thu, 26 Feb 2015 14:45:18 +0000" ], "ID": [ "16710075" ] }, { "$": { "Resource": "api/computer/3415985" }, "LastReportTime": [ "Thu, 26 Feb 2015 14:50:52 +0000" ], "ID": [ "3415985" ] } ] } } ``` XML ``` <?xml version="1.0" encoding="UTF-8"?> <BESAPI xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="BESAPI.xsd"> <Computer Resource="api/computer/2431038"> <LastReportTime>Thu, 26 Feb 2015 14:54:41 +0000</LastReportTime> <ID>2431038</ID> </Computer> <Computer Resource="api/computer/16710075"> <LastReportTime>Thu, 26 Feb 2015 14:45:18 +0000</LastReportTime> <ID>16710075</ID> </Computer> <Computer Resource="api/computer/3415985"> <LastReportTime>Thu, 26 Feb 2015 14:50:52 +0000</LastReportTime> <ID>3415985</ID> </Computer> </BESAPI> ```

Original source