使用java脚本解析JSON数据

时间:2017-06-23 18:15:41

标签: javascript json parsing

我使用Google plus API并从中获取此数据,并在解析此JSON数据时出错[/ p>]

first part of json data that i parsing

enter image description here

这是我用来解析这些数据并在测试数据对象时得到错误的代码并且正常工作并保存过去2张图像中显示的数据

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:无法读取属性'附件'未定义的

2 个答案:

答案 0 :(得分:1)

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
}

答案 1 :(得分:1)

中的

element

for (var element in allIems) {

allItems的键,在本例中是数组索引。你必须解决这样的实际数组项:

var obj = allItems[element].object.attachments;

您的代码element.object.attachments;尝试访问不存在的号码的属性object

因为我们知道allItems是一个数组,所以你可以写:

for (var i = 0; i < allIems.length; i++) {
  var obj = allItems[i].object.attachments;