未捕获的SyntaxError:具有JSON.parse的意外标记

第三行导致这个错误的原因是什么?

var products = [{
  "name": "Pizza",
  "price": "10",
  "quantity": "7"
}, {
  "name": "Cerveja",
  "price": "12",
  "quantity": "5"
}, {
  "name": "Hamburguer",
  "price": "10",
  "quantity": "2"
}, {
  "name": "Fraldas",
  "price": "6",
  "quantity": "2"
}];
console.log(products);
var b = JSON.parse(products); //unexpected token o

products是一个对象。 (从对象文字创建)

JSON.parse()用于将包含JSON表示法的字符串转换为Javascript对象。

您的代码将对象转换为字符串(通过调用.toString() )以尝试将其解析为JSON文本。
默认的.toString()返回"[object Object]" ,它不是有效的JSON; 因此错误。


假设你知道它是有效的JSON,但你仍然得到这个...

在这种情况下,可能从字符串中隐藏/特殊字符来自您获取它们的任何来源。 当你粘贴到验证器中时,它们会丢失 - 但是在字符串中它们仍然存在。 那些不可见的字符将打破JSON.parse()

如果s是你的原始JSON,那么清理它:

// preserve newlines, etc - use valid JSON
s = s.replace(/n/g, "n")  
               .replace(/'/g, "'")
               .replace(/"/g, '"')
               .replace(/&/g, "&")
               .replace(/r/g, "r")
               .replace(/t/g, "t")
               .replace(/b/g, "b")
               .replace(/f/g, "f");
// remove non-printable and other non-valid JSON chars
s = s.replace(/[u0000-u0019]+/g,""); 
var o = JSON.parse(s);

看来你想把对象串联起来
所以,你应该使用:

JSON.stringify(products);

错误的原因是JSON.parse()需要一个String值,而products是一个Array

注意:我认为它尝试json.parse('[object Array]') ,它抱怨它在[后面没有期望令牌o

链接地址: http://www.djcxy.com/p/45987.html

上一篇: Uncaught SyntaxError: Unexpected token with JSON.parse

下一篇: Uncaught SyntaxError: Unexpected token T