【问题标题】:Json Loop Jquery each doesn't work "undefined"Json Loop Jquery 每个都不起作用“未定义”
【发布时间】:2012-04-01 10:34:49
【问题描述】:

我对这些数据有疑问,

我的 json 数组数据包含:

{"list_file":["{\"id\":\"511\",\"name\":\"Jellyfish.jpg\",\"projectId\":\"12539\",\"projectName\ ":\"项目名称sszd 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 fueoifezuoiufiz 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 行。

谢谢

编辑:这次是整个数组

【问题讨论】:

  • 因为它只是将其视为字符串而不是 json?警报(文件类型); ?
  • 是否包含在 [] 中,因为您发布的内容不是有效的 JSON,除非它包含在 [] 中。如果已包装,那么您的函数应该可以正常工作...jsfiddle.net/skram/F9Mrd
  • 好的,这次我已经用完整的 json 代码编辑了数组
  • 您刚刚更新的 json 看起来也无效。当您在浏览器中访问 json 文件时,您能否给我们提供实际的输出结果?
  • 这是我从浏览器得到的,它是有效的,我刚刚用jsonlint.com测试了它

标签: jquery json


【解决方案1】:

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

看看这个Tinker.io

如果您解析 JSON,则可以使用普通符号来访问对象 属性。

验证 json here!

祝你好运!

【讨论】:

  • 我的 json 是有效的,实际上我在编辑中发布了整个数组;)
【解决方案2】:

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

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

更新:

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

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

应该是

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

【讨论】:

  • 我很确定是这样的 ;)
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    不是有效的 json

    你应该用括号括起来!

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

    先解决这个问题。稍后检查。

    【讨论】:

    • 数据在括号中,这只是我的 json 数组的一部分
    • 等等,它是一个数组,但应该在[]
    • @Jerome 所以上传所有的Json
    猜你喜欢
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多