看似有效的JSON上的JSON.parse错误

我正在使用JSON.parse()来解析从使用jquery的$.get()调用的api(Laravel 5)返回的jsonjson看似有效,但JSON.parse()在Safari和Chrome中都返回错误。

Chrome说:

 Uncaught SyntaxError: Unexpected token o 

Safari说:

 SyntaxError: JSON Parse error: Unexpected identifier "object" 

代码片段如下:

  $.get('/foo/' + product_id, function(data){ console.log(data); var product = JSON.parse(data); if (product) { // do something } }); 

JSON是:

 { "id":"1b7b3eb7-8769-48fe-a421-64c105de3eff", "parent":null, "org_id":"845d0d53-de68-42c3-9007-c3d0e72c555e", "category_id":"e58237f7-e040-4098-8d46-b84f8cdf7d83", "purchase_tax":null, "sale_tax":null, "code":"982", "name":"Mr. Destin Hoppe", "is_purchased":false, "is_sold":false, "purchase_price":null, "selling_price":null, "purchase_includes_tax":false, "sale_includes_tax":false, "created_at":"2015-09-16 17:39:34", "updated_at":"2015-09-16 17:39:34" } 

有趣的是, eval()工作正常。

该错误是data是对象的结果,而不是JSON。 你不需要解析任何东西; 它已经是一个JavaScript对象了。 jQuery在其get方法中进行解析。 要确认这一点,请将此行添加到回调的顶部。

 console.log(data["id"]); 

作为此错误的另一个示例,由于相同的原因,以下行也将失败。

 JSON.parse({});