javascript - 如何创建 for 循环以从 JSON 数组中获取数据

标签 javascript arrays json

我想从 JSON 数组中获取数据,如下所示,因此 this.responceText 返回此数据。我尝试使用 Javascript 代码中的数据,但它不起作用,而且也没有错误消息。我的代码哪里错了?谢谢。

{"0":{"folder":"callofthewild","title":"Call of the Wild"},"1":{"folder":"2001spaceodyssey","title":"2001: A Space Odyssey "},"2":{"folder":"hobbit","title":"The Hobbit"},"4":{"folder":"pokemon","title":"I Choose You! (Pokemon Chapter Books)"},"5":{"folder":"alannathefirstadventure","title":"Alanna: The First Adventure (Song of the Lioness #1)"}}

我的 JavaScript 的一部分;

var books = JSON.parse(this.responseText);

for (var i = 0; i < books.length; i++) {
    var book = document.createElement("div");
    var text = document.createElement("p");
    var image = document.createElement("img");
    image.src = "books/" + books.i.folder + "/cover.jpg";
    text.innerHTML = books.i.title;

    book.appendChild(image);
    book.appendChild(text);
    document.getElementById("allbooks").appendChild(book);
}

最佳答案

由于您的 JSON 是一个对象(而不是数组),因此您可以使用 Object.keys()获取其所有键,然后迭代其键以获取适当的值:

var books = JSON.parse(this.responseText);
Object.keys(books).forEach(function (index) {
   var book = books[index];
   var div = document.createElement("div");
   var text = document.createElement("p");
   var image = document.createElement("img");
   image.src = 'books/' + book.folder + '/cover.jpg';
   text.innerHTML = book.title;
   div.appendChild(image);
   div.appendChild(text);
   document.getElementById('allbooks').appendChild(div);
});

关于javascript - 如何创建 for 循环以从 JSON 数组中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103945/

相关文章:

javascript - 如何创建 Jquery 幻灯片左删除列表项?

arrays - MATLAB 对数组值表达式的所有元素求和

java - JsonIgnoreType 只查看字段声明的类型?

java - 数组中的精确正整数

json - 在 Jmeter 中使用 JsonPath 和 != 条件从 JSON 中提取一些值

php - 如何将json数据存储到mysql

javascript - 如何拆分长 GraphQL 模式

javascript - iOS 上 Cordova inAppBrowser 中的executeScript执行不一致

javascript - 发送电子邮件时出现 SSL 错误,无法连接到 Postfix

arrays - C - 为什么 'address of' 运算符返回变量的整数值,而不管变量类型如何?