解析从PHP数组创建的JSON数组

时间:2015-12-20 13:06:27

标签: javascript json

{
    "3": {
        "id": "3",
        "ocena_ocena": "2",
        "ocena_profesor": "\u041c\u0430\u0440\u043a\u043e \u041c\u0430\u0440\u043a\u043e\u0432\u0438\u045b",
        "ocena_napomena": "",
        "ocena_datum": "31.12.2015."
    },
    "1": {
        "id": "1",
        "ocena_ocena": "5",
        "ocena_profesor": "\u041c\u0430\u0440\u043a\u043e \u041c\u0430\u0440\u043a\u043e\u0432\u0438\u045b",
        "ocena_napomena": "",
        "ocena_datum": "22.12.2015."
    }
}

我正在使用ajax来获取此JSON。我尝试解析它:

request.done(function(response) {
    alert(response.ocena_ocena);
});

有人可以帮帮我吗?

我还需要知道如何使用json进行foreach语句?

1 个答案:

答案 0 :(得分:2)

由于您的JSON代表JavaScript对象,因此您应该包含attribute名称(如果我们将JavaScript对象视为地图,那么我们需要使用key)。

尝试

response["1"].ocena_ocena

response["3"].ocena_ocena

由于您从服务器而不是数组返回JSON对象,要迭代其属性,您可以执行

for (var i in response) {
    console.log(response[i].ocena_ocena);
}

Object.keys(response).forEach(function f(e) {console.log(response[e].ocena_ocena)})

如果您可以修改服务器端代码以返回看起来像这样的JSON,

[
    {
        "id": "3",
        "ocena_ocena": "2",
        ...
    },
    {
        "id": "1",
        "ocena_ocena": "5",
        ...
    }
]

然后你可以更轻松地迭代它

response.forEach(function f(e) {console.log(e.ocena_ocena)})