javascript获得json内在价值

时间:2012-09-13 12:40:34

标签: javascript json

让我有下一个对象

   var o = { "foo" : {"bar" : "omg"} };  

我可以使用

获得密钥foo的价值
o["foo"] // return {"bar" : "omg"} 

我可以使用

bar内获得密钥foo的值
o["foo"]["bar"]  // return "omg"   

我可以使用括号bar一次性获得foo[]键的值。
有点像

o["foo.bar"] // not working(

o["foo/bar"] // not working(

5 个答案:

答案 0 :(得分:3)

创建一个getter函数来做这样的事情是很常见的。来自评论:

  

我有对象o和字符串'foo.bar',我想要“omg”。

var getProp = function (theObject, propString) {
    var current = theObject;
    var split = propString.split('.');

    for (var i = 0; i < split.length; i++) {
        if (current.hasOwnProperty(split[i])) {
            current = current[split[i]];
        }
    }

    return current;
};

http://jsfiddle.net/MXu2M/

注意:这是一个抛出的示例,您需要在将其放到您的网站上之前对其进行防弹并进行缓解。

答案 1 :(得分:0)

很遗憾,您只能使用o["foo"]["bar"]o.foo.bar

答案 2 :(得分:0)

不,您必须使用o["foo"]["bar"]因为它是另一个对象内的对象。如果要使用“foo.bar”访问它,则意味着您必须创建第一个对象:

var o = {"foo.bar": "omg"}

答案 3 :(得分:0)

o["foo.bar"]o["foo/bar"]对您的示例无效。您可以使用更清晰的表示法:

var bar = o.foo.bar // bar will contain 'omg'

答案 4 :(得分:0)

有一种方法,但我不确定这是你要求的:

eval("o.foo.bar");

虽然它很危险,并且不使用[],但是如果您想要的是使用字符串来访问它的任何对象