var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};
var myObject = eval('(' + myJSONtext + ')');
为什么要个括号?真奇怪...

解决方案 »

  1.   

    參見:http://www.v-ec.com/jslib/【Scope Chain And Closure】部分,標簽4/*
       eval不能直接得到一个直接量的对象
       因為eval将{}当成了复合语句标识
    */alert(eval('{name:"MyName"}'));//MyName/*
       复合语句是用逗号运算符将几个语句联合起来,用花括号括起来,形成一个语句块(statement block)。
       复合语句允许使用标签,但只允许出现一个,并且出现在整段语句的最开始位置
    */name:{"MyName",alert('2'),alert('3')}/*
       我们要做的是改变花括号{}在eval中的意义,使它成为一个表达式或值
    *///通过表达式运算符(),将{name:"MyName"}返回为一个值;
    alert(eval('({name:"MyName"})'));//我们也构造了一个复合语句,使得{name:"MyName"}成为这个复合语句里的一个表达式;
    alert(eval('{0,{name:"MyName"}}'));//可以进一步简化为连续表达式;
    alert(eval('0,{name:"MyName"}'));
      

  2.   

    我也遇到同样的问题。如果你请求的dataType是html的话,是需要用var myObject = eval('(' + myJSONtext + ')'); 这种形式的。
    但是如果你请求的dataType是json的话,就可以直接用var myObject = myJSONtext;不信的话,你可以试一下!!