对于这种情况的特殊性,我感到抱歉,但是我无法解决这个问题。
我创建了以下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));