繁体   English   中英

Javascript - 从JSON对象(数组)中提取数据

[英]Javascript - Extracting data from JSON object (array)

首先,我是初学者,使用Javascript和JSON。 我试图在Stack Overflow上找到一个现有的答案,这有助于解决大部分问题(我头脑中)! 所以,我希望有人可以提供帮助。

我有一个带有书籍信息的JSON文件,如下所示。 实际文件包含约5000本书的信息。

[
  {
    "Book": "The Phenomenon",
    "Author": "Bob Bryant",
    "Author_link": "abc"
  },
  {
    "Book": "Supreme Commander of Idiots",
    "Author": "Cynthia C",
    "Author_link": "def"
  },
  {
    "Book": "An Interesting Life",
    "Author": "Doris Dodd",
    "Author_link": "ghi"
  }
]

考虑到数字编号(0到4xxx)作为书号,我想生成一个随机数(小于5000),然后使用JavaScript从JSON文件中提取有关该书的信息。 理想情况下,我想将书名,作者姓名和作者链接分配给我以后可以在面向用户的页面中使用的三个不同变量。

我已经尝试创建一个var ,并使用JSON.parse从数组中提取特定数据,但它无法正常工作。 我还看到了一个让我用这样的东西的例子......

var requestURL = 'filename.json';
var request = new XMLHttpRequest();
request.open('GET', requestURL);
request.responseType = 'json';
request.send();

但是,我不知道这是如何工作的(不是它有效)。 我很感激有关如何解决这个问题的任何指导。

要获取json响应,您需要添加一个回调侦听器。 请注意,您也可以将其添加为对现有函数的引用。

request.onreadystatechange = function() {
  if (request.readyState == XMLHttpRequest.DONE) {
    var json = request.responseText;

    // do stuff with the json
  }
}

要生成0和n之间的随机数,请使用Math.random() * n ,其中n是最大值。

var n = json.length;
var random = Math.floor((Math.random() * n);

要引用json数据中的项,可以使用数组和字典引用。

var randomBook = json[random];

var bookTitle = randomBook.Book
var bookAuthor = randomBook.Author
var bookAuthorLink = randomBook.Author_link

首先,您将以项目所需的任何方式从本地JSON文件中获取数据。 一旦引用了实际文件,就将其解析为有效的JSON。

var jsonData = JSON.parse(jsonFile);

然后,您可以将其作为有效的JavaScript对象进行操作。 因此,要从对象中获取随机书籍,请执行以下操作:

var randomBook = jsonData[Math.floor(Math.random()*(max-min+1)+min)];

(有关随机数生成的解释,请参阅答案。)

这将从JSON对象获得minmax之间的随机书。 您可以通过执行以下操作从中获取任何信息:

randomBook.Book
randomBook.Author
randomBook.Author_link

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM