JSON数据检索

时间:2011-05-05 23:43:20

标签: javascript arrays json

我有一个嵌套了一个对象的数组,该对象位于一个Object中,也在一个Object中。

编辑:我的原始数据结构格式错误,因此这里是console.log(数据)的屏幕上限:

enter image description here

这是从AJAX请求返回的,我遇到了访问数组的问题。诀窍是它不会总是为每个父对象返回3个数组,数组的数量取决于“长度”,或者更确切地说,“长度”反映了每个包含数组的对象所期望的数组数。 “OID”是“th”和“uh”对象的每个数组的名称。

还有几个主要对象,使用for(var i in data)

进行迭代

我尝试过类似的事情:

for(var i in data) {
    for(var x in data[i].clicks) {
        //And now I'm lost here
        //I've tried getting the name of the Array from "OID"
        //and going from there, that failed miserably.
    }
}

如何在不了解所述数组的名称,数量或长度的情况下完成这些数组的内容,最好能够获得每个数组的内容。

提前致谢。

1 个答案:

答案 0 :(得分:1)

你的问题和数据结构不是很清楚,我不熟悉你用来声明数组的语法,这对我来说似乎不对。

如果您打算将数据结构用于

data={
    "Clicks": {
            "length": 3,   //Can be between 0-3
            "OID": {
                1: "1",
                2: "2",
                3: "3"
            },
            "th": {
            1: [
                 null,
                null,
                null,
                null
            ],
            2: [
                null,
                null,
                null,
                null
            ],
            3: [
                null,
                null,
                null,
                null
            ]
            },
            "uh": {
           1: [
                 null,
                null,
                null,
                null
            ],
            2: [
                null,
                null,
                null,
                null
            ],
            3: [
                null,
                null,
                null,
                null
            ]
        }
    }
};

你想要做的是迭代thuh中的所有元素,其中密钥来自OID中的条目,你应该做的事情

for(var i = 1; i <= data.Clicks.length; i++){
    data.Clicks.th[data.Clicks.OID[i]];
    data.Clicks.uh[data.Clicks.OID[i]];
}

但是,如果您的密钥不是数字,那么通过为thuh中的每一个返回一个数组数组似乎可以提供更好的服务:

data={
    "Clicks": {
            "th": [
                [
                     null,
                    null,
                    null,
                    null
                ],
                [
                    null,
                    null,
                    null,
                    null
                ],
                [
                    null,
                    null,
                    null,
                    null
                ]
            ],
            "uh": [
               [
                     null,
                    null,
                    null,
                    null
                ],
                [
                    null,
                    null,
                    null,
                    null
                ],
                [
                    null,
                    null,
                    null,
                    null
                ]
            ]
        }
    };

并以

的形式访问它
//assuming th and uh are of the same length always
for(var i = 1; i <= data.Clicks.th.length; i++){
    data.Clicks.th[i];
    data.Clicks.uh[i];
}