是什么导致了第三行上的错误?
Var product = [{ “名称”:“披萨”, “价格”:“10”, “数量”:“7” },{ “名称”:“Cerveja”, “价格”:“12”, “数量”:“5” },{ “名称”:“汉堡”, “价格”:“10”, “数量”:“2” },{ “名称”:“Fraldas”, “价格”:“6”, “数量”:“2” }); console.log(产品); var b = JSON.parse(products);//意外令牌o
打开控制台以查看错误
是什么导致了第三行上的错误?
Var product = [{ “名称”:“披萨”, “价格”:“10”, “数量”:“7” },{ “名称”:“Cerveja”, “价格”:“12”, “数量”:“5” },{ “名称”:“汉堡”, “价格”:“10”, “数量”:“2” },{ “名称”:“Fraldas”, “价格”:“6”, “数量”:“2” }); console.log(产品); var b = JSON.parse(products);//意外令牌o
打开控制台以查看错误
当前回答
在调用JSON.parse()时,另一个可能导致“SyntaxError: Unexpected token”异常的问题是在字符串值中使用以下任何一种:
新行字符。 制表符(是的,可以用Tab键生成的制表符!) 任何独立的斜杠\(但出于某种原因不是/,至少在Chrome上不是)。
(完整列表请参见这里的字符串部分。)
例如,下面的代码会让你得到这个异常:
{
"msg" : {
"message": "It cannot
contain a new-line",
"description": "Some discription with a tabbed space is also bad",
"value": "It cannot have 3\4 un-escaped"
}
}
所以应该改为:
{
"msg" : {
"message": "It cannot\ncontain a new-line",
"description": "Some discription with a\t\ttabbed space",
"value": "It cannot have 3\\4 un-escaped"
}
}
我应该说,这使得它在json格式和大量文本中非常不可读。
其他回答
为什么需要JSON.parse?它已经是对象数组格式了。
最好使用JSON。Stringify如下所示:
var b = JSON.stringify(产品);
当您使用POST或PUT方法时,请确保对主体部分进行了字符串化。
我在这里记录了一个例子 https://gist.github.com/manju16832003/4a92a2be693a8fda7ca84b58b8fa7154
似乎您想要对对象进行字符串化,而不是解析。所以这样做:
JSON.stringify(products);
错误的原因是JSON.parse()期望一个String值,而products是一个Array。
注意:我认为它尝试json。parse('[object Array]'),它会抱怨在[后面没有token o。
您所得到的错误,即“意外的令牌o”,是因为期望JSON,但在解析时获得了一个对象。“o”是单词“object”的第一个字母。
您应该在这里验证JSON字符串。
一个有效的JSON字符串必须在键周围有双引号:
JSON.parse({"u1":1000,"u2":1100}) // will be ok
如果没有引号,它将导致一个错误:
JSON.parse({u1:1000,u2:1100})
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2
使用单引号也会导致错误:
JSON.parse({'u1':1000,'u2':1100})
// error Uncaught SyntaxError: Unexpected token ' in JSON at position 1