json.parse在位置1的JSON中返回意外的标记o

时间:2017-05-09 20:36:27

标签: javascript html json api parsing

你好我试图解析一个api

    </div>
    <div id=test>
    </div>
  </body>
  <script type="text/javascript" src="js/jest1.js"></script>
  <script>

  var xhr = new XMLHttpRequest();
  xhr.open("GET", "apikey", false);
  xhr.send();
  console.log(xhr.status);
  console.log(xhr.response);
  var parsed = JSON.parse(xhr);
  document.getElementById('test').innerHTML = myObject.description;
</script>

当我在没有解析的情况下执行此操作时,我会看到控制台中的所有信息,我试图从控制台中获取信息并将其分配给对象。在这种情况下,它是cnn新闻文章。 这将是api的输出

"status": "ok", "source": "cnn", "sortBy": "top", "articles": [{
    "author": "Clarissa Ward, Waffa Munayyer, Salma Abdelaziz,  and Fiona Sibbett, CNN",
    "title": "Gasping for life: Syria's war on children",
    "description": "Harrowing new footage of the chemical attack on the town of Khan Sheikhoun reveals the depravity of the Syrian regime, reports CNN's Clarissa Ward.",
    "url": "http://www.cnn.com/2017/05/09/middleeast/syria-chemical-attack-ward/index.html",
    "urlToImage": "http://i2.cdn.cnn.com/cnnnext/dam/assets/170509143050-syria-clarissa-ward-video-hp-tease-super-tease.jpg",
    "publishedAt": "2017-05-09T20:01:16Z"
  }]

我不相信我曾经调用过getjson()我从来没有真正使用过它而且在调用解析时没有声明我正在尝试做什么即将从api输出描述并且现在它在元素中显示未定义< / p>

1 个答案:

答案 0 :(得分:2)

var parsed = JSON.parse(xhr);尝试解析XMLHttpRequest 对象。这将触发将对象转换为字符串,然后尝试将该字符串解析为JSON,从而产生"[object Object]",这是o的无效JSON。

你可能想要:

var parsed = JSON.parse(xhr.responseText);

然后查看parsed以查看描述在结果对象中的位置。我无法告诉你,因为问题中的JSON无效。 可能parsed.articles[0].description,在这种情况下:

document.getElementById('test').innerHTML = parsed.articles[0].description;

但是,如果没有有效的JSON可以使用,很难说。使用浏览器中内置的调试器进行计算,查看parsed分配后的值是非常简单的。

旁注:同步ajax会导致用户体验不佳,基本上不需要。