【发布时间】:2021-09-12 07:49:24
【问题描述】:
所以我有这个 XML :
<enclosure length="25000" type="image/jpeg" url="https://www.hellothere.com/something.jpg"/>
我已经将它转换为这样的 javascript 对象:
{
title: (1) ["something"],
enclosure: (1) [{...}]
}
我在调试的时候已经看过了,值在那里,而它是undefined,每次我尝试访问它时。
当我做console.log(JSON.stringify(data, null, 2)) 它返回这个结果:
"enclosure": [
{
"$": {
"length": "25000",
"type": "image/jpeg",
"url": "https://hellothere.com/something.jpg"
}
}
]
但是当我做 console.log(data) 时,它会返回 undefined
如果我们拉伸它:
data :
> title: (1) ['something here']
> enclosure: (1) [{...}]
> 0: {$: {...}}
> $: {length='25000',type='image/jpeg',url='https://www.hellothere.com/something.jpg'}
length: '25000'
type: 'image/jpeg'
url: 'https://www.hellothere.com/something.jpg'
在 python 中,我尝试使用 data['enclosure']['@url'] 之类的东西,它可以工作。
我试过了:
> data['enclosure'][0]['url']
> data['enclosure']['@url']
> data['enclosure']['$url']
但没有任何效果。 如何在该 enclosure 标记中获取 url 的值?谢谢
编辑:
代码:
index.js
app.get('/', (req, res) => {
getJson.produce_data(url_source.url, function (err, data) {
data = data["rss"]["channel"][0]["item"];
if (err) {
return console.error(err);
}
res.render('json_results', {title: 'NEWS TODAY', data_in: data});
});
});
produce_data 函数:
function produce_data(url, callback) {
var req = https.get(url, function(res) {
var currentData = '';
res.on('data', function(chunk) {
currentData += chunk;
})
res.on('error', function(err) {
callback(err, null);
})
res.on('timeout', function(err) {
callback(err, null);
})
res.on('end', function() {
parsedtext(currentData , function(err, result) {
callback(null, result);
})
});
});
}
这些是该过程中涉及的代码行。
截图:
这是调试模式下包含的数据:
【问题讨论】:
-
请发布演示问题的代码,例如一个对象文字示例,无论您“已经将其转换为 javascript 对象”是什么。上面的代码都不是有效的 javascript。
['enclosure'][0]是一个包含一个元素的数组字面量,即字符串“enclosure”。['enclosure'][0]返回字符串 'enclosure',然后'enclosure'['url']返回 undefined(除非您使用 url 属性扩展了 String.prototype )。 -
请检查上面编辑的信息。
标签: javascript node.js json xml express