在我的另一个问题中,我被问到更普遍地问这个问题是什么,如果你想让我一字不漏地修改另一个问题,请告诉我。
我会尝试尽可能多地概括我的问题,但我并不是都熟悉.json文件,所以这将有点延伸。
所以,我有一个.json文档,其中包含我需要的对象(id)和我拥有的对象(名称),它们都在另一个对象内。像这样的东西(主要是简化版):
{"LEA":
{"name": "Limited Edition Alpha", "code": "LEA", "cards":[
{"name": "Sorin", "id": "02389302"},
"SOI":
{"name": "Shadows over Innistrad", "code": "SOI", "cards":[
{"name": "Avacyn", "id": "12394381"}
}
我试图遍历每一个对象('LEA','SOI'部分 - 其中有192个),直到我遇到我拥有的对象(例如'Avacyn'),然后找到对象我需要(在这种情况下'12394381'),我目前正处于骑车穿越物体的阶段:
$.getJSON("AllSets.json", function(json) {
console.log(json);
Sets = Object.keys(json);
i = 0;
while (i < Sets.length){
currentSet = Sets[i];
console.log(json.currentSet);
console.log(currentSet);
console.log(i);
i = i + 1;
}
});
但是我遇到了一个障碍,因为currentSet和i变量正在返回正确的值,但是json.currentSet正在返回undefined
我相信这是因为它正在读取它作为变量名而不是变量内容。
我真正需要知道的是,我正确接近这个吗?是否有捷径可寻?我完全偏离了轨道吗?我不是一个javascript编码器,我不熟悉.json,我只是想从我目前拥有的字符串中获取id。
编辑:
下面的完整代码,非常感谢@Felix Kling提供了所有令人惊叹的资源。关键是要在每个对象中移动一个项目。
$.getJSON("AllSets.json", function(json) {
Sets = Object.keys(json);
i = 0;
while (i < Sets.length){
currentSet = Sets[i];
Cards = Object.keys(json[currentSet].cards);
j = 0
while (j < Cards.length){
currentCard = Cards[j];
cardName = json[currentSet].cards[currentCard].name;
if (cardName == "Island"){
console.log(json[currentSet].cards[currentCard].multiverseid);
}
j = j + 1
}
i = i + 1;
}
}
});