不能在“var temp = {'1':...}”上使用JSON.parse?

时间:2012-05-23 00:08:16

标签: javascript

我一直收到这个错误:

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数据..但我得到这个错误= /这是什么意思我错了?

4 个答案:

答案 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"});

更多信息:

JSON Doc