返回随机JSON对象

时间:2016-11-29 23:11:03

标签: javascript jquery json

我在AWS服务器上有JSON我访问使用JQuery,在json文件里面是几百个我希望循环的对象并随机挑出一个。然后获取该对象的属性。

这是JSON:

 {  
   "1":{  
      "title":"Sailing for Kids",
      "ISBN":"1909911267"
 },
   "2":{  
      "title":"True Spirit: The Aussie girl who took on the world",
      "ISBN":"413513243"
 },
..........

这就是我试图获取json对象的方式。

$(document).ready(function(){
$.ajax({
  crossOrigin: true,
  url : "https://link/to/file.json",
  type : "GET",
  success:function(data){
     var randomItem = data[Math.random() * data.length | 0];

      // take only the element with index 0
      alert(randomItem[0]);
  }
});
});

但是,警报仅显示一个字符。像这样:

enter image description here

如何遍历所有返回的JSON文件文件,选择一个对象然后获取属性(标题/ ISBN)以便我可以使用它们?

2 个答案:

答案 0 :(得分:-2)

[
 {  
  "1":{  
  "title":"Sailing for Kids",
  "ISBN":"1909911267"}
 },
 {
 "2":{  
  "title":"True Spirit: The Aussie girl who took on the world",
  "ISBN":"413513243"}
 }
]

您可能需要按上述方法构建JSON

答案 1 :(得分:-2)

首先,我会console.log(data)甚至console.log(data[1])来查看我实际得到的内容。根据标题,结果可能是作为文本而不是对象发送的,在这种情况下,您需要执行data = JSON.parse(data)

然后,要获得对象的实际长度(如建议的那样),您需要使用Object.keys(数据),或者您可以将数据排列在数组中。

如果n的长度超过Math.floor(Math.random() * n)那么该范围内的随机数。

编辑: 不小心,Object.keys(data)是一个键数组。因此,您需要的长度是Object.keys(data).length

编辑2:

var keys = Object.keys(data)
var n = keys.length;
var randomNumber = Math.floor(Math.random() * n);
var randomKey = keys[randomNumber];