如何在字符串上使用eval()获取对象值

时间:2012-09-29 19:06:14

标签: javascript json object

我正在玩维基百科json,所以......我有这个对象:

Object {query: Object}
query: Object
    pages: Object
        869994: Object
            ns: 0
            pageid: 869994
            revisions: Array[1]
            title // <- I need you baby

使用id检索(在本例中为869994)。现在我想检索标题,所以我应该使用

    $.getJSON(myIdUrl, function(data) {

    var obj = 'data.query.pages.' + id + '.title';

    console.log(obj); // it prints data.query.pages.869994.title should be right..

    var title = eval(obj); // now I want to assign obj title value to my variable

    // something else…      
}); 

我收到错误,“SyntaxError:意外号码'.869994'”......

我认为我误解了eval()函数,或者只是错误的路径来检索obj数据......

建议?谢谢!

1 个答案:

答案 0 :(得分:2)

改变这个:

var obj = 'data.query.pages.' + id + '.title';

到此:

var obj = 'data.query.pages["' + id + '"].title';

原因是解析器很混乱;当你取消引用一个对象时,它期望一个标识符,而不是一个文字数字。

var x = {};
x.5 = "test"; // <- notice this seems very unnatural