gpt4 book ai didi

javascript - 从通过解析 XML 生成的 JSON 响应中获取 Key 的值

转载 作者:行者123 更新时间:2023-12-02 22:56:41 31 4
gpt4 key购买 nike

我正在尝试从 URL 解析 XML 响应并将其转换为 JSON,解析的响应有很多不需要的数据,但是我只需要属性“TEXT”的值

尝试通过调用output = JSON.stringify(result);来获取 key 并返回 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,我认为它无效。我试图获取“POPULARITY”内的“TEXT”值

{"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"}}]}]}}

最佳答案

关于你在这里做错了什么:

  • 您不需要对 parseString 的结果进行字符串化。它已经是一个对象,您可以按原样使用它。

  • 如果你想访问text,可以通过result['ALEXA']['SD']['POPULARITY']['$'][来实现'文本']

或者:

您可以尝试使用camaro 。它是专门为此目的而设计的:将 xml 转换为 json,并仅获取您感兴趣的属性。

const { transform } = require('camaro')

const xml = `

<?xml version="1.0" encoding="UTF-8"?>

<!-- Need more Alexa data? Find our APIs here: https://aws.amazon.com/alexa/ -->
<ALEXA VER="0.9" URL="google.com/" HOME="0" AID="=" IDN="google.com/">
<SD><POPULARITY URL="google.com/" TEXT="1" SOURCE="panel"/><REACH RANK="1"/><RANK DELTA="+0"/><COUNTRY CODE="US" NAME="United States" RANK="1"/></SD></ALEXA>
`

;(async function () {
const template = {
text: 'ALEXA/SD/POPULARITY/@TEXT'
}

const result = await transform(xml, template)

console.log(JSON.stringify(result, null, 4));

})()

输出:

{
"text": "1"
}

您想要的text属性可以通过使用result.text来访问

关于javascript - 从通过解析 XML 生成的 JSON 响应中获取 Key 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57951595/

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