我有一个看起来像这样的json文件:
{
"courses": [{
"Name": "Course1",
"Containing": {
"C1": {
"Name": "C1name",
"When": "9-17:30"
},
"C2": {
"Name": "C2name",
"When": "9-17:30"
},
"C3": {
"Name": "C3name",
"When": "9-17:30"
}
}
}]
}
我使用了
$.ajax({...
从json获取数据的函数。但是,我无法获得“包含”部分的详细信息,我想在for循环中调用它。
所以我想要像data.courses[0].Containing.(insert part with for-loop-variable).Name
我该怎么做?
非常感谢!! :)
答案 0 :(得分:2)
您不能以.
表示法使用此方法。我的意思是:
var container = "C1";
data.courses[0].Containing.container; // This doesn't work.
您需要使用[]
方式:
var container = "C1";
data.courses[0].Containing[container]; // This works.
答案 1 :(得分:1)
一旦解析了JSON($.ajax
可能正在为你做什么),你就不再处理JSON了,你正在处理具有嵌套属性的JavaScript对象。
你要循环的东西是一个对象,所以你可以使用for-in
或Object.keys
循环遍历它的属性名称(返回一个对象的数组拥有,可枚举的属性)然后我们可以使用forEach
:
var parsedData = {
"courses": [{
"Name": "Course1",
"Containing": {
"C1": {
"Name": "C1name",
"When": "9-17:30"
},
"C2": {
"Name": "C2name",
"When": "9-17:30"
},
"C3": {
"Name": "C3name",
"When": "9-17:30"
}
}
}]
};
var containing = parsedData.courses[0].Containing;
Object.keys(containing).forEach(function(key) {
snippet.log(containing[key].Name);
});

<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
答案 2 :(得分:0)
以同样的方式,您可以直接使用jQuery的每个功能
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
{{1}}&#13;