Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript读取嵌套JSON_Javascript_Json - Fatal编程技术网

使用JavaScript读取嵌套JSON

使用JavaScript读取嵌套JSON,javascript,json,Javascript,Json,我正在尝试使用JavaScript读取JSON文件的嵌套内容 以下是我的JavaScript: <script> var obj, xmlhttp, myObj, x, txt = ""; var request = new XMLHttpRequest(); request.open('GET', 'https://private-c01be-moneyadviceservice.apiary-mock.com/locale/categories.json'); request.s

我正在尝试使用JavaScript读取JSON文件的嵌套内容

以下是我的JavaScript:

<script>
var obj, xmlhttp, myObj, x, txt = "";
var request = new XMLHttpRequest();
request.open('GET', 'https://private-c01be-moneyadviceservice.apiary-mock.com/locale/categories.json');
request.setRequestHeader("Content-type", "application/json");
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:', this.status);
console.log('Headers:', this.getAllResponseHeaders());
console.log('Body:', this.responseText);

  myObj = JSON.parse(this.responseText);

   for (x in myObj) {
        txt += "<h2>" + myObj[x].title + "</h2><p>" + myObj[x].description + "</p><br/>";
        txt += "<h3>" + myObj[x].contents.title + "</h3><p>" + myObj[x].contents.description + "</p><br/>";
    }

    document.getElementById("MAS").innerHTML = txt; 
  }
};

request.send();
</script>
嵌套的JSON显示为“未定义”。如何访问嵌套数据


我已经阅读了无数关于这个主题的帖子,但没有一篇在这个例子中起到真正的作用

您也需要循环查看
内容,因为它们是如下所示的数组:

   for (x in myObj) {
     txt += "<h2>" + myObj[x].title + "</h2><p>" + myObj[x].description + "</p><br/>";
     for(y in myObj[x].contents){
    txt += "<h3>" + myObj[x].contents[y].title + "</h3><p>" + myObj[x].contents[y].description + "</p><br/>";
     }
   }
for(myObj中的x){
txt+=“”+myObj[x]。标题+”“+myObj[x]。说明+”


”; 对于(myObj[x].目录中的y){ txt+=“”+myObj[x]。内容[y]。标题+“”+myObj[x]。内容[y]。说明+“


”; } }

这是一个。

您还需要循环查看
内容,因为它们是如下所示的数组:

   for (x in myObj) {
     txt += "<h2>" + myObj[x].title + "</h2><p>" + myObj[x].description + "</p><br/>";
     for(y in myObj[x].contents){
    txt += "<h3>" + myObj[x].contents[y].title + "</h3><p>" + myObj[x].contents[y].description + "</p><br/>";
     }
   }
for(myObj中的x){
txt+=“”+myObj[x]。标题+”“+myObj[x]。说明+”


”; 对于(myObj[x].目录中的y){ txt+=“”+myObj[x]。内容[y]。标题+“”+myObj[x]。内容[y]。说明+“


”; } }

这是一个。

您无法访问
myObj[x].contents.title,因为
contents
是一个数组。需要迭代
myObj[x].contents
以获取其属性。

您无法访问
myObj[x].contents.title,因为
contents
是一个数组。需要迭代myObj[x]。内容
以获取其属性。

内容是一个对象数组。您需要循环使用它并获得myObj[x].contents[y].title,例如。@Christopher我也注意到了这一点。您应该将此作为答案发布。@LuisEstevez如果您愿意,可以继续。我在打电话,所以有点麻烦。:)内容是一个对象数组。您需要循环使用它并获得myObj[x].contents[y].title,例如。@Christopher我也注意到了这一点。您应该将此作为答案发布。@LuisEstevez如果您愿意,可以继续。我在打电话,所以有点麻烦。:)我猜OP想让第三行留在外环,只是说‘我猜OP想让第三行留在外环,只是说’