解析 JSON 失败,JavaScript 中缺少元素
parsing a JSON fails with missing element in javascript
我正在尝试在javascript中使用Youtube的Gdata JSON响应。我的代码循环访问播放列表并提取项目数据。但对于少数视频,评级不存在,这抛出
"TypeError: item.gd$rating is undefined"
有没有办法在访问元素之前进行检查。
这是与我获取 JSON 响应的代码。
var avgrating = item['gd$rating']['average'];
var maxrating = item['gd$rating']['max'];
var minrating = item['gd$rating']['min'];
var numRaters = item['gd$rating']['numRaters'];
避免错误的一种方法是
var rating = item['gd$rating'] || {}; // If it is undefined default it to empty object
var avgrating = rating['average']; //now if it is not present it will just give undefoned as value
var maxrating = irating['max'];
var minrating = rating['min'];
var numRaters = rating['numRaters'];
或者明确检查:
var rating = item['gd$rating'], avgrating, maxrating;
if(rating)
{
avgrating = rating['average'];
maxrating =rating['max'];
...
}
请注意,在 if 条件中,我们正在检查表达式的真实性,因此,除了未定义、null、"、false、0 之外的任何内容都将被视为 true,并将进入条件。但是在这里,您可以确定它要么是一个对象,要么什么都没有,因此您可以依靠此检查。
相关文章:
- 如何访问数组中的数组元素(JavaScript)
- 如何找到从中调用函数的元素(Javascript)
- 另一个元素JAVAscript中的元素位置
- 隐藏元素:Javascript属性和CSS样式之间的区别
- 如何比较数组中的元素(javascript)
- 使用一个函数来不同的元素 JavaScript
- 我需要从数组中获取一些元素 - JavaScript
- 元素 JavaScript 的读取宽度
- 识别数组的最后一个元素 - javascript
- 你如何使 Math.random 数组中的每一个第 9 个元素都是同一个元素?[JavaScript]
- 即时创建 Asp.Net 元素 Javascript
- 在提交表单上动态更改输入元素 javascript
- Kendo UI Grid 获取当前元素 javascript 的 ID
- 在我的 chrome 网上商店应用程序中禁用检查元素/JavaScript 控制台
- Canvas 元素 + Javascript 在 Chrome 和 Firefox 中工作,而不是在 Internet
- 对于在循环中不打印所有元素 - Javascript
- 选择元素 |Javascript vs Jquery.
- 无法删除 DOM 元素(JavaScript,CreateJS)
- 单击元素>JavaScript输出文档.activeElement VS.事件目标
- 当用户在文本框中输入数字时,将动态获得数组元素javascript或PHP