0

我不断收到此错误:

SyntaxError: Unexpected token o 

对于一段简单的代码:

   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

4 回答 4

5

这里的问题是那不是 JSON。那是一个 Javascript 对象。(JSON 的语法源自 Javascript 对象的语法。)它不需要解析为 Javascript 对象,因为它已经是一个对象。

只要做console.log(temp),你就会看到这一点。

您收到此奇怪消息的原因是尝试对JSON.parse对象执行操作会使 Javascript 首先尝试将对象转换为字符串。结果的字符串没有帮助:"[object Object]". JSON.parse试图解析这个。它处理[但落在了 first 上o,因为这是非法的 JSON 语法。

于 2012-05-23T00:11:04.190 回答
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))
于 2012-05-23T00:11:45.257 回答
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 :)"]}';
于 2012-05-23T00:11:25.267 回答
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 文档

于 2012-05-23T00:20:31.627 回答