我可以输出JSON对象的名称吗?

时间:2014-05-02 07:31:17

标签: json

想象一下,我设置了一个像这样的JSON:

"A": {
    "appointment": {
        "201405091210": [
            "1",
            "2"
        ]
    },
}
"B": {
    "appointment": {
        "201405091211": [
            "1",
            "2"
        ]
    },
}
"C": {
    "appointment": {
        "201405091212": [
            "1",
            "2"
        ]
    },
}

所以说现在我想输出每个对象中第一个对象的“名称”,意思是:

201405091210 201405091212 201405091212

我能这样做吗?

我试过了:

  $.each(data, function (index, data) {
      console.log(data.appointment[1]);
  })

1 个答案:

答案 0 :(得分:1)

当你的代码运行时,你没有JSON,你有一个JavaScript对象。

  

所以说现在我想输出"名称"每个对象中的第一个对象,意思是:

如果您的数据真的如图所示(appointment对象中只有一个属性),那么您可以使用Object.keys()并获取第一个(唯一)条目来获取名称appointment对象中唯一的属性:

$.each(data, function (index, entry) {
    console.log(Object.keys(entry.appointment)[0]);
});

另一种方法是使用for-in并抓住第一个"拥有"属性:

$.each(data, function (index, entry) {
    var name;
    for (name in entry.appointment) {
        if (entry.appointment.hasOwnProperty(name)) {
            console.log(name);
            break;
        }
    }
});

如果appointment对象中可能有多个属性,则无法可靠地获得"第一个"属性名称.. JavaScript对象中的属性没有已定义的顺序。您必须查看所有属性并确定(可能通过检查与特定模式匹配的属性)您想要的属性。


附注:我将data迭代器函数中的each参数更改为entry以避免混淆。在迭代器之外使用data引用整个事情,但在{/ 1}} 内部迭代器只引用其中一个条目只是在寻找麻烦。