我一直收到这个错误:
SyntaxError: Unexpected token o
对于v.simple代码:
var temp = {"1":["2","1","0000-00-00 00:00:00","testing once"],"2":["2","1","0000-00-00 00:00:00","testing twice :)"]};
console.log(JSON.parse(temp)); //error is here
var temp是json_encoded数据..但我得到这个错误= /这是什么意思我错了?
答案 0 :(得分:5)
这里的问题是那不是JSON。这是一个Javascript对象。 (JSON的语法源自Javascript对象。)不需要将其解析为Javascript对象,因为它已经是一个。
只需console.log(temp)
,你就会看到这一点。
您收到此奇怪消息的原因是,尝试对对象执行JSON.parse
会使Javascript首次尝试将对象转换为字符串。结果的字符串无用:"[object Object]"
。 JSON.parse
尝试解析此问题。它会处理[
,但会落在第一个o
上,因为这是非法的JSON语法。
答案 1 :(得分:3)
你应该将一个字符串传递给JSON.parse。在您的示例中,您正在传递一个对象。您可能正在寻找JSON.stringify():
var temp = {"1":["2","1","0000-00-00 00:00:00","testing once"],"2":["2","1","0000-00-00 00:00:00","testing twice :)"]}
console.log(JSON.stringify(temp))
答案 2 :(得分:2)
JSON.parse()
期待一个字符串。你传递的是一个物体。如果您更改temp
的声明,以便它实际上包含一个JSON字符串,那么您的代码应该可以工作:
var temp = '{"1":["2","1","0000-00-00 00:00:00","testing once"],"2":["2","1","0000-00-00 00:00:00","testing twice :)"]}';
答案 3 :(得分:0)
您可以通过两种方式转换JSON对象中的内容:
1. from a string you can use JSON.parse that is faster than eval:
JSON.parse ('{"key":"value"}');
2. from an object you can use JSON.stringify:
JSON.stringify ({"key":"value"});
更多信息: