关于javascript:在JSON解析期间发生什么是JSON VM747:1错误?

What is a JSON VM747:1 error that happens during JSON parsing?

本问题已经有最佳答案,请猛点这里访问。

我在玩星球大战的API,但不明白为什么我不能解析我得到的数据:

1
2
3
4
5
6
7
8
$.ajax({
   url:"http://swapi.co/api/people/1/"
}).done(function( data ) {
console.log(JSON.stringify({'foo': 'bar'})) //returns {"foo":"bar"}
console.log(JSON.parse(JSON.stringify({'foo': 'bar'}))) //returns Object {foo:"bar"}
console.log(data); //returns Object {name:"Luke Skywalker", height:"172", mass:"77", hair_color:"blond", skin_color:"fair"…}
console.log(JSON.parse(data)) // throws error VM747:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
});


data已经是一个对象,您可以通过控制台记录Object { ... }而不是{ ... }这样的事实看到。

直接从铬控制台:

enter image description here

注意一个对象和一个字符串的不同输出。

所以:您不必解析任何内容,只需直接访问data

don't get why I can't parse the data

将对象传递给JSON.parse将把该对象转换为字符串。所以你最终做了

1
JSON.parse('[object Object]')

它抛出一个错误,因为[object Object]不是有效的json。