0

このエラーが発生し続けます:

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

4 に答える 4

5

ここでの問題は、それが JSON ではないことです。それは Javascript オブジェクトです。(JSON の構文は、Javascript オブジェクトの構文から派生しています。) JavaScript オブジェクトは既に 1 つであるため、解析して Javascript オブジェクトにする必要はありません。

実行するだけでconsole.log(temp)、これが表示されます。

この奇妙なメッセージが表示される理由は、オブジェクトに対して実行しようとするとJSON.parse、Javascript が最初にオブジェクトを文字列に変換しようとするためです。結果の文字列は役に立たない: "[object Object]". JSON.parseこれを解析しようとします。[これは最初のに対応しますが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オブジェクトの何かを次の2つの方法で変換できます。

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 に答える