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

Cod*_*oet 3 javascript jquery json laravel-5

我正在使用jquery JSON.parse()来解析json从api(Laravel 5)返回的那个$.get().在json似乎是有效的,但是,JSON.parse()在Safari和Chrome浏览器返回错误.

Chrome说:

Uncaught SyntaxError: Unexpected token o
Run Code Online (Sandbox Code Playgroud)

Safari说:

SyntaxError: JSON Parse error: Unexpected identifier "object"
Run Code Online (Sandbox Code Playgroud)

代码片段如下:

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

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"
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,eval()工作得很好.

Dre*_*nor 9

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

console.log(data["id"]);
Run Code Online (Sandbox Code Playgroud)

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

JSON.parse({});
Run Code Online (Sandbox Code Playgroud)