访问json数组中的对象

时间:2012-09-14 13:41:33

标签: javascript jquery json

我有问题。我需要在jQuery上访问数组中的对象。

我的json:

{"employ": [
{
    "id": 46846,
    "name": "some name",
    "schedule": "main",
    "hours": {
        "11.09.2012": 5,
        "12.09.2012": 8
    }
}
,
{
    "id": 3543,
    "name": "another name",
    "schedule": "main",
    "hours": {
        "11.09.2012": 9,
        "12.09.2012": 7
    }
}
]}

我的jquery:

$(document).ready(function(){
      $("#click").click(function(){
          $.getJSON('employ.json', {}, function(json){
              $("#userid").append(json.employ[0].hours.????);
          });
      })
  });

我在“????”的地方需要什么代码访问名为“11.09.2012”的元素?

1 个答案:

答案 0 :(得分:8)

只需使用["key"]对其进行“索引”,例如:

json.employ[0].hours["11.09.2012"]

JavaScript对象允许两种方式访问​​其项目;使用点表示法(.name)或括号表示法(["name"])。显然,["name"]在多个场合使用,例如你的(其中项目包含无效的标识符)。这两种方式都是允许的,只取决于偏好和情况。

当不直接使用JSON时,JavaScript对象不要求将每个项目声明为字符串,因此您可以:

var json = {asdf: "fdsa", aaa: "fff"};

它完全有效。但在此类声明中,您只能使用用于命名常量变量的有效字符(作为有效标识符)。因此,对于这种情况,您应该始终能够使用点表示法。

使用实际的JSON通信时,所有键(项)都存储为字符串,因此允许使用“无效”字符。但是,如果密钥包含无效字符,则必须使用括号表示法([])。 []是获取和设置项目的最安全方式,尤其是动态。通过动态,我的意思是做:

for (var i = 0; i < 10; i++) {
    if (("test"+i) in json && json["test"+i] > 10) {
        // do something
    }
}

在上面,你不能做类似的事情:

json.test+i

让它做你想做的事。