【问题标题】:JSON : Cannot read property 'value of a key' of undefinedJSON:无法读取未定义的属性“键值”
【发布时间】:2020-04-17 22:43:28
【问题描述】:

所以,我正在尝试处理 API。 我成功地在我的浏览器中加载了 json(这是一个对象数组),如下所示

0:
source: {id: null, name: "Protothema.uk"}
author: "james bond"
title: " A TITLE"
description: "A DESCRIPTION"
__proto__: Object

我的代码

$.getJSON("http://newsapi.org/v2/top-headlines?country=uk&category=health&apiKey=MYAPIKEY", function(data){
   //console.log(data);

   $.each(data,function(index,value){
       console.log(value);

    console.log(value[0]);       
     console.log(value[0].title)//Cannot read property 'title' of undefined
   });

});



当我尝试打印像console.log(value[0]); 这样的整个索引时,我成功获取索引0 的所有对象。

但是当我尝试打印诸如 console.log(value[0].title) 之类的特定键值时,我得到 Cannot read property 'title' of undefined

我卡了几个小时,我做错了什么?

【问题讨论】:

  • 数组只有1个元素,所以没有value[1]
  • 试试value[0].title
  • value[0]... 不是value[1]
  • @Barmar 对不起,我编辑它。不是value[1] 我的意思是我仍然想得到console.log(value[0].title)
  • 现在我猜你正试图在 API 调用返回之前打印它。记住 API 调用是异步的,你应该在回调函数中打印结果,而不是在调用之后。

标签: javascript arrays json api object


【解决方案1】:

响应结构data

根据结构,尝试访问每篇文章的标题:

// Using JQuery.each() 
$.each(data.articles,function(index, article){
  console.log(article.title); // to access title of each article.
});

【讨论】:

  • 我已经在使用console.log(value) 并打印所有对象。但是value.title 给出:未定义
  • 请检查我的答案,并在使用前尝试使用Object.keys检查该对象的真实性?
  • 0: 是包含对象的数组的索引。这个对象有一些元素,好吗?其中一个是title: " A TITLE",所以名称标题的值是一个字符串
  • 能否请您控制台数据并告诉我它的结构?我同意你所说的,但这就是你在这个问题上所解释的。我认为查看数据结构会有所帮助
  • 我的伙计,你太棒了,非常感谢你的时间和耐心。这个世界需要更多像你这样的人。再次感谢
猜你喜欢
  • 1970-01-01
  • 2019-11-13
  • 2023-04-01
  • 2023-03-11
  • 2016-08-08
  • 2020-12-28
  • 2015-10-06
  • 2023-03-20
  • 2011-08-25
相关资源
最近更新 更多