Json Loop Jquery每个都不起作用“undefined”

时间:2012-03-15 20:43:07

标签: jquery json

我对这些数据有疑问,

我的json数组数据包含:

{"list_file":["{\"id\":\"511\",\"name\":\"Jellyfish.jpg\",\"projectId\":\"12539\",\"projectName\":\"project namessszd ddddzzde\",\"time\":\"1331843704\",\"size\":775702,\"timeRightFormat\":\"03\\\/15\\\/12 01:35:04 PM\",\"userFirstName\":\"Jerome\",\"userLastName\":\"Test\",\"userId\":\"8\"}","{\"id\":\"510\",\"name\":\"Hydrangeas.jpg\",\"projectId\":\"12539\",\"projectName\":\"project namessszd ddddzzde\",\"time\":\"1331843704\",\"size\":595284,\"timeRightFormat\":\"03\\\/15\\\/12 01:35:04 PM\",\"userFirstName\":\"Jerome\",\"userLastName\":\"Test\",\"userId\":\"8\"}","{\"id\":\"509\",\"name\":\"dudnzoizu ufoiuzio fueoifezuoiufifzeouofufzeoiuiofuz oife iofez.jpg\",\"projectId\":\"12539\",\"projectName\":\"project namessszd ddddzzde\",\"time\":\"1331843704\",\"size\":885242,\"timeRightFormat\":\"03\\\/15\\\/12 01:35:04 PM\",\"userFirstName\":\"Jerome\",\"userLastName\":\"Test\",\"userId\":\"8\"}"]}

当我循环遍历这样的元素时

    $.each(data.list_file, function(i, file) {
        alert(file.id);
    });

我在alert()框中未定义,但如果我这样做而不是

      $.each(data.list_file, function(i, file) {
        alert(file);
    });

我得到了正确的json线。

谢谢

编辑:这次使用整个数组

4 个答案:

答案 0 :(得分:2)

将JSON包含在[]中,然后就可以了。 你拥有的是一个json列表。

并查看此Tinker.io

如果您解析JSON,则可以使用常规表示法来访问对象 属性。

验证json here!

祝你好运!

答案 1 :(得分:1)

我假设你正在进行ajax调用。您需要指定“json”数据类型,以便jquery将其解析为json。

$.ajax({
    url: url,
    dataType: "json",
    success: function (data) {
        // ...
    }
})

更新:

您的json数组是一个json字符串数组,请尝试将其更改为对象数组:

{ "list_file": [ "{...}" ]}

应该是

{ "list_file": [ {...} ]}

答案 2 :(得分:1)

list_file中包含的内容是字符串而不是Object。实际上,你有3个字符串..每个对象...尝试使用下面的函数,

$.each(data['list_file'], function(i, file) {
    alert(JSON.parse(file).id);
});

答案 3 :(得分:0)

这是有效的json

你应该用括号括起来!

你有很多必须在数组中的对象。

先修复此问题。稍后检查。