gpt4 book ai didi

javascript - 无法循环遍历 NodeJS 中的 JSON 对象

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:38 25 4
gpt4 key购买 nike

我有一个 NODEJS 程序,它使用 xml2js 将 XML 文件转换为 JSON 并解析它。然后我尝试遍历 json 对象并显示每个对象的 ID、LastReportTime,但我得到的输出显示未定义

输出

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

Node

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(程序从XML转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>

最佳答案

考虑到您的 JSON 示例遍历对象似乎无关紧要。也不需要先对数据进行字符串化,然后再解析字符串。

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');
});

关于javascript - 无法循环遍历 NodeJS 中的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28755072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com