对于这种情况的特殊性,我感到抱歉,但是我无法解决这个问题。

我创建了以下JSON文件:

{"characters":[
{"name":"battler", "sprites":
    [{"img":"but_a11_aseru1.png","img":"but_a11_komaru1.png","img":"but_a21_majime1.png","img":"but_b11_majime1.png"}]
},
{"name":"eva", "sprites":
    [{"img":"eva_a11_akire1.png","img":"eva_b11_majime1.png","img":"eva_b21_naku1.png","img":"eva_b22_warai1.png"}]
}
]}


我正在尝试用此代码加载它,只是现在为每个条目中的第一个“ sprites”回显“ img”的值:

$.getJSON( "./char.json", function( data ) {
            for (i = 0;i < data.characters.length;i++) {
            alert(JSON.stringify(data.characters[i].sprites[0]));
    }
});


例如:我试图让它在循环的第一次迭代中返回“ but_a11_aseru1.png”,在第二次迭代中返回“ eva_a11_akire1.png”。

我试过data.characters[i].sprites[0],只是为了得到第一个的{"img":"but_a11_aseru1.png"}值(第二个是类似的)。 data.characters[i].sprites.img出现为未定义。我可以在“:”处使用.split,但我想了解如何正确使用JSON。

有人可以指出我做错了吗?谢谢。

最佳答案

要使用您的代码获得预期的输出(第一次迭代为“ but_a11_aseru1.png”),您需要将sprites组成一个数组,其中包含与各个图像相对应的项:

{"characters":[
  {"name":"battler", "sprites": [
    "but_a11_aseru1.png",
    "but_a11_komaru1.png",
    "but_a21_majime1.png",
    "but_b11_majime1.png"
  ]},
  {"name":"eva", "sprites": [
    "eva_a11_akire1.png",
    "eva_b11_majime1.png",
    "eva_b21_naku1.png",
    "eva_b22_warai1.png"
  ]}
]}




alert(JSON.stringify(data.characters[i].sprites[0]));


要么

{"characters":[
  {"name":"battler", "sprites": [
    {"img":"but_a11_aseru1.png"},
    {"img":"but_a11_komaru1.png"},
    {"img":"but_a21_majime1.png"},
    {"img":"but_b11_majime1.png"}
  ]},
  {"name":"eva", "sprites": [
    {"img":"eva_a11_akire1.png"},
    {"img":"eva_b11_majime1.png"},
    {"img":"eva_b21_naku1.png"},
    {"img":"eva_b22_warai1.png"}
  ]}
]}




alert(JSON.stringify(data.characters[i].sprites[0].img));

10-06 12:22