私はこの単純なJavaScriptコードを試しました:
eval('{"Topics":["toto","tata","titi"]}')
たとえば、Chromeコンソールでは、これは
SyntaxError:予期しないトークン :
JSONLint でJSONを試しましたが、有効です。
バグがありますか?
FWIW、使用 JSON.parse
代わりに。 eval
より安全です。
あなたはこのように書かなければなりません
eval('('+stingJson+')' );
文字列をオブジェクトに変換する
私が助けてくれることを願っています!
eval
しない式コンテキストを強制し、提供される文字列は無効 JavaScriptプログラムであるため、最初の3つのトークン(およびそれらの表示方法)は:
{ // <-- beginning of a block, and NOT an Object literal
"Topics" // <-- string value, okay (note this is NOT a label)
: // <-- huh? expecting ";" or "}" or an operator, etc.
ハッピーコーディング。
ナンバーワン:evalを使用しないでください。
二番。 evalは何かを作成するためにのみ使用し、十分に評価してください。たとえば:
eval('var topics = {"Topics":["toto","tata","titi"]}');
それはオブジェクトを評価しているからです。 eval()では、構文的に有効なjavascriptを渡す必要があり、実行しているのはベアオブジェクトを渡すことだけです。呼び出しは次のようになります。
eval('var x = {"Topics":etc...}');
使用する:
function evalJson(jsArray){ eval("function x(){ return "+ jsArray +"; }"); return x(); }
var yourJson =evalJson('{"Topics":["toto","tata","titi"]}');
console.log(yourJson.Topics[1]); // print 'tata''
jQueryを使用している場合は、関数$.parseJSON()
を使用してください。私のために働いていましたが、同じ問題がありました。