Javascript 用java脚本解析JSON数据
我使用GooglePlus API并从中获取数据,在解析此JSON数据时出错 这是我用来解析这些数据的代码,当数据对象被测试并且工作正常时,我会得到错误信息,并保持数据在过去两幅图像中的显示Javascript 用java脚本解析JSON数据,javascript,json,parsing,Javascript,Json,Parsing,我使用GooglePlus API并从中获取数据,在解析此JSON数据时出错 这是我用来解析这些数据的代码,当数据对象被测试并且工作正常时,我会得到错误信息,并保持数据在过去两幅图像中的显示 var allIems = data.items; for (var element in allIems) { document.getElementById('datafromapi').innerHTML += (" , published time :" + element.publ
var allIems = data.items;
for (var element in allIems) {
document.getElementById('datafromapi').innerHTML +=
(" , published time :" + element.published +
" , last updated time :" + element.updated +
", complete url : " + element.url
);
var obj = element.object.attachments;
document.getElementById('datafromapi').innerHTML +=
(+"\nattachments of post :\n" +
" type : " +
obj[0].objectType +
" ,displayName of content : " +
obj[0].displayName +
" ,content URL : " +
obj[0].url +
" ,content data :" +
obj[0].image.url +
" ,content type : " +
obj[0].image.type +
" ,content height : " +
obj[0].image.height +
" ,content width : " +
obj[0].image.width +
"\n\n\n");
}
});
我发现了那个错误
未捕获的TypeError:无法读取未定义的属性“附件”
Javascript有一个内置的JSON解析器,您可以使用它接收数据字符串并返回一个对象
let jsonDataAsString = "{\"a\":1,\"b\":2}";
let jsonDataAsObject = JSON.parse(jsonDataAsString);
然后可以作为对象遍历数据,使用点表示法引用属性
console.log(jsonDataAsObject.a); // 1
为了安全起见,您应该在尝试使用之前将属性与null进行比较
if(jsonDataAsObject.somePropery != null) {
// the property exists so you can access it here
}
元素
中的值
for (var element in allIems) {
是所有项的键,在本例中是数组索引。您必须处理实际的数组项,如下所示:
var obj = allItems[element].object.attachments;
您的代码element.object.attachments代码>尝试访问不存在的数字的属性对象
因为我们知道allItems
是一个数组,所以您可以编写:
for (var i = 0; i < allIems.length; i++) {
var obj = allItems[i].object.attachments;
for(变量i=0;i
此错误是因为并非所有元素都包含对象
属性。错误出现在附件属性NOT object上,并且所有元素都有objectattribute@ahmedkhattab错误表明元素.object
未定义。由于它未定义,因此没有任何属性。@ahmedkhattab他是对的,oObject
属性未定义。@ahmedkhattab检查allIems
数组中的第一项。您可能想先检查属性是否未定义,因为它可以定义并设置为null(完全有效)@SCUNLIFE就我所用过的而言null==未定义,只要你是我们!=你应该很好。不过如果你是喜欢使用===的人,那么是的,在尝试访问属性之前,你需要更仔细地检查