使用JSON文件

时间:2016-08-30 12:54:56

标签: javascript jquery json

如何从JSON文件中读取特定数据并在Javascript中再次使用该数据。

示例:我有一个.JSON文件,其中包含数千条太阳系外行星记录。在JSON中有一个列(好吧,至少在我将它转换为JSON时在CVS中),它包含所有这些在parsec中以距离计算的行星的信息。

我希望能够计算出所有这些行星的平均值,并通过简单的javascript提醒这个数字。

这就是JSON中列出这些行星的方式:

"Distance [pc]": 110.62,
   "Effective Temperature [K]": 4742,
   "Date of Last Update": "5/14/2014"

我是JSON的新手,所以对于JSON专家来说,这可能是一个很容易回答的答案。希望你能帮忙,谢谢!

PS:我添加了JSON文件,认为它可以帮助您理解和回答问题。这是我上传的临时URL

编辑:

这里有更多的JSON代码

[
 {
   "rowid": 1,
   "Host name": "11 Com",
   "Number of Planets in System": 1,
   "Planet Mass or M*sin(i)[Jupiter mass]": 19.4,
   "Planet Radius [Jupiter radii]": null,
   "Planet Density [g": {
      "cm**3]": null
   },
   "Distance [pc]": 110.62,
   "Effective Temperature [K]": 4742,
   "Date of Last Update": "5/14/2014"
},
 {
   "rowid": 2,
   "Host name": "11 UMi",
   "Number of Planets in System": 1,
   "Planet Mass or M*sin(i)[Jupiter mass]": 10.5,
   "Planet Radius [Jupiter radii]": null,
   "Planet Density [g": {
      "cm**3]": null
   },
   "Distance [pc]": 119.47,
   "Effective Temperature [K]": 4340,
   "Date of Last Update": "5/14/2014"
},
 {
   "rowid": 3,
   "Host name": "14 And",
   "Number of Planets in System": 1,
   "Planet Mass or M*sin(i)[Jupiter mass]": 4.8,
   "Planet Radius [Jupiter radii]": null,
   "Planet Density [g": {
      "cm**3]": null
   },
   "Distance [pc]": 76.39,
   "Effective Temperature [K]": 4813,
   "Date of Last Update": "5/14/2014"
},
 {
   "rowid": 4,
   "Host name": "14 Her",
   "Number of Planets in System": 1,
   "Planet Mass or M*sin(i)[Jupiter mass]": 4.64,
   "Planet Radius [Jupiter radii]": null,
   "Planet Density [g": {
      "cm**3]": null
   },
   "Distance [pc]": 18.15,
   "Effective Temperature [K]": 5311,
   "Date of Last Update": "5/14/2014"
}]
enter code here

2 个答案:

答案 0 :(得分:1)

如果你的JSON是字符串格式,你可以做这样的事情

 $seed = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 $seed2= str_split('0123456789');
 $rand = [];
 for($i=mt_rand(1,2);$i<=2;$i++){
   shuffle($seed2);
   $rand[]=$seed2[0];     
 }
 while(count($rand)!=6){
  shuffle($seed);
  $rand[]=$seed[0];
 }
 shuffle($rand);
 print $feedID = implode('',$rand);

编辑:如果json位于某个端点上,则可以使用jQuery库。

var jsonObjects = JSON.parse("yourJsonString");
var distanceSum = 0;
for(var i=0; i<jsonObjects.length;i++){
      var distance = jsonObjects[i]["Distance [pc]"];
       distanceSum = distanceSum + distance;
    //do something with distance

}
alert("Average distance " + (distanceSum / jsonObjects.length));

编辑2:

假设您的文件结构如下:

$.get('url/jsonFile.json', function(jsonObjects){
var distanceSum = 0;
    for(var i=0; i<jsonObjects.length;i++){
          var distance = jsonObjects[i]["Distance [pc]"];
           distanceSum = distanceSum + distance;
    }
    alert("Average distance " + (distanceSum / jsonObjects.length));
});

您应该使用以下代码段

的index.html

index.html
jsonFile.json

答案 1 :(得分:0)

希望这会对你有帮助..

var data =  [{
"rowid": 1,
"Host name": "11 Com",
"Number of Planets in System": 1,
"Planet Mass or M*sin(i)[Jupiter mass]": 19.4,
"Planet Radius [Jupiter radii]": null,
"Planet Density [g": {
    "cm**3]": null
},
"Distance [pc]": 110.62,
"Effective Temperature [K]": 4742,
"Date of Last Update": "5/14/2014"
}, {
"rowid": 2,
"Host name": "11 UMi",
"Number of Planets in System": 1,
"Planet Mass or M*sin(i)[Jupiter mass]": 10.5,
"Planet Radius [Jupiter radii]": null,
"Planet Density [g": {
    "cm**3]": null
},
"Distance [pc]": 119.47,
"Effective Temperature [K]": 4340,
"Date of Last Update": "5/14/2014"
}]

现在数据是一个对象数组,用于获取您需要提供的第一个对象data[0],然后您需要提供data[1]等等。要获得第一个对象的距离,您只需调用data[0]["Distance [pc]"],您可以根据数据的长度使用for循环来计算它