无法解析json数组

时间:2014-09-29 15:45:45

标签: jquery json

Jquery中的简单问题 - 但是解决方案对我来说并不清楚

$( document ).ready(function() {
    handleJson();
});

function handleJson(){
    $.getJSON("fileList.json", function(json) {

        $.each(json, function(idx, obj) {
            console.log(json.fileurls[idx]);
        });

    });
}

这是我的json

{
  "fileurls":[
    "file y 2014-09-17 10_43_40",
    "file x 2014-09-15 10_15_32"
  ]
}

控制台中的打印结果未定义

4 个答案:

答案 0 :(得分:1)

这不起作用,因为你正在调用fileurls [idx],但是填写了IS idx。 idx是数组的索引,obj是它的值。

在你的JSON中,数组的索引是'fileurls',它包含两个文件名条目。

要遍历文件名,您必须遍历数组本身,因此您必须添加第二个循环。试试这个:

function handleJson(){
$.getJSON(fileList.json, function(json) {
    $.each(json, function(idx, obj) {
        $.each(obj, function(idx2, obj2) {
            console.log(obj2);
        });
    });
});

}

祝你好运 博尔德

答案 1 :(得分:0)

如果想要明智地访问,你不需要迭代,只需这样写:

$.getJSON("fileList.json", function(json) {

        console.log(json.fileurls[0]);

    });

<击>

您的数组是json.fileurlsjson是单个对象,因此在json.fileurls上进行迭代:

$.each(json.fileurls, function(idx, obj) {

            console.log(json.fileurls[idx]);
        });

运行示例:

http://jsfiddle.net/5jo87475/

答案 2 :(得分:0)

问题可能是由于您尝试循环json对象的每个属性而不是fileurls数组。试试这个:

.each(json.fileurls, function(idx, obj) {
    console.log(json.fileurls[idx]);
});

虽然obj参数实际上是你想要的值,所以你可以这样更容易:

.each(json.fileurls, function(idx, obj) {
    console.log(obj);
});

答案 3 :(得分:0)

OBJ将为您提供“fileurls”,但如果您想分别拥有“文件y 2014-09-17 10_43_40”和“file x 2014-09-15 10_15_32”元素,则应再次迭代OBJ

$.getJSON("fileList.json", function(json) {

     $.each(json, function(idx, obj) {

          $.each(obj, function(count, element) {

               console.log(element);

          });
     });
});