【发布时间】:2020-01-16 23:32:22
【问题描述】:
我正在尝试解析来自 URL 的 XML 响应并将其转换为 JSON,解析后的响应有很多不需要的数据,但是我只需要属性“TEXT”的值
尝试通过调用 output = JSON.stringify(result); 来获取密钥并返回 return output['TEXT'];但它给出了一个未定义的错误。
var parseString = require('xml2js').parseString;
function parse()
{
http.get('http://data.alexa.com/data?cli=10&url=https://google.com',
(resp) => {
let data = '';
// A chunk of data has been recieved.
resp.on('data', (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on('end', () => {
//console.log(JSON.parse(data).explanation);
parseString(data, function (err, result) {
console.log(JSON.stringify(result));
output = JSON.stringify(result);
});
});
}).on("error", (err) => {
console.log("Error: " + err.message);
});
return output['TEXT'];
}
这是解析函数返回的完整 JSON,我认为它无效。我试图在“流行”中获取“文本”值
{"ALEXA":{"$":
{"VER":"0.9","URL":"google.com/","HOME":"0","AID":"=","IDN":
"buymeacoffee.com/"},"SD":[{"POPULARITY":[{"$":
{"URL":"google.com/","TEXT"
:"20242","SOURCE":"panel"}}],"REACH":[{"$":{"RANK":"25887"}}],"RANK":
[{"$":
{"DEL TA":"-21167"}}],"COUNTRY":
[{"$":{"CODE":"US","NAME":"United States","RANK":"2093
5"}}]}]}}
【问题讨论】:
-
如果你想访问对象的属性,你不想通过
JSON.stringify()把它变成一个字符串 -
另外,由于 HTTP 请求的异步特性,您不能在
parse()的末尾返回output。鉴于您当前的代码,我建议将回调传递给parse(),您可以使用解析出的数据调用它,例如callback(result.ALEXA.SD[0].POPULARITY[0].$.TEXT)
标签: javascript node.js json