在javascript中调用对象详细信息fron json

时间:2016-01-15 12:10:50

标签: javascript jquery json ajax

我有一个看起来像这样的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

这样的东西

我该怎么做?

非常感谢!! :)

3 个答案:

答案 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-inObject.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;
&#13;
&#13;

答案 2 :(得分:0)

以同样的方式,您可以直接使用jQuery的每个功能

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
{{1}}
&#13;
&#13;
&#13;