我有一个json文件,并使用map进行了迭代,但是我有一个名称为'content'的深对象键,当我返回带有map的json数组时,我想从中获取特定键
JSON:
{
"item": [
{
"title": "...",
"link": "...",
"content": {
"_url": "How can I get this :D",
...
}
}
]
}
我的JavaScript代码:
getAllNews = async () => {
const result = await this.getResource('item/')
return result.map(this._transformPosts)
// Here I iterate my json
}
_transformPosts = (item) => {
return {
title: item.title,
link: item.link,
image: item.content._url,
// and here I try get _url
id: item.guide,
}
}
答案 0 :(得分:1)
要正确处理所有情况,请记住始终检查该属性是否确实存在:
return {
title: item.title,
link: item.link,
image: (item.content && item.content._url) ? item.content._url : '', // <-- fix here.
id: item.guide,
}
可能的问题是:
item.conten._url,
(应为content
)item
缺少content
。在这种情况下,item.content._url
将引发异常。像我上面所做的那样添加三元运算符将确保该属性存在,否则它将默认值设置为''
。如果这不是预期的默认值,请随时进行更改。答案 1 :(得分:0)
首先,您必须获取项目密钥和一个数组。让它遍历并获取您要获取的密钥
let jsonData = {
"item": [
{
"title": "title",
"link": "link",
"content": {
"_url": "How can I get this :D"
}
}
]
}
function getKeyFromObject(obj,key){
return obj.item.map(each=>each.content[key])
}
const url = getKeyFromObject(jsonData,"_url");
console.log(url);
答案 2 :(得分:0)
尝试
return {
title: item.title,
link: item.link,
image: item['content']['_url'],
id: item.guide,
}