在Javascript中获取API返回[object,object]

时间:2016-10-17 17:42:41

标签: javascript asynchronous fetch

所以我这里有这个代码,它从URL调用并在控制台中显示数组

fetch('http://jsonplaceholder.typicode.com/users') 
  .then(  
    function(response) {  
      if (response.status !== 200) {  
        console.log('Looks like there was a problem');  
        return;  
      }

      response.json().then(function(data){  
        console.log(data); 
      });  
    }  
  )  
  .catch(function(err) {  
    console.log('Fetch Error', err);  
})

然而,打印出来:

[object Object] {
  address: [object Object] {
    city: "Lebsackbury",
    geo: [object Object] { ... },
    street: "Kattie Turnpike",
    suite: "Suite 198",
    zipcode: "31428-2261"
  },

有关如何删除[object, object]并让它正常显示的想法,与网址相同吗?

1 个答案:

答案 0 :(得分:2)

获取不会返回[object object]。它的工作方式应该如此。

您所观察到的是console.log如何处理嵌套对象的副产品 - 它使用内置的“toString()”,它会添加一些额外的信息,例如类型。

这种行为与现代Web浏览器处理JSON文本的方式不同,JSON文本只是直接在浏览器窗口中以原始状态显示它,以及一些基本格式。

要获得您期望的内容,请使用将使用内置JSON字符串化器的console.log(JSON.toString(data));。要添加更好的格式,您可以使用console.log(JSON.toString(data,null,2));

但是,您正在接受JSON响应,将其解析为对象,然后将该对象转换回JSON字符串。这很傻。

由于URL返回一个JSON字符串,您可以直接控制该JSON字符串的记录。

console.log(response.body);

这样的东西