如何通过Json和Jquery获得比特币加权价格?

时间:2011-10-09 21:26:14

标签: jquery json getjson

我正在尝试让Jquery读取一个json文件,

但不幸的是我无法让它发挥作用。

这是我的json文件。请参阅:http://bitcoincharts.com/t/weighted_prices.json

{
    "USD": {"7d": "4.4549", "30d": "5.2016", "24h": "4.1373"}, 
    "GBP": {"7d": "2.9706", "30d": "3.2620", "24h": "2.5463"}, 
}

我的jquery脚本看起来像这样

<script type="text/javascript">
 (document).ready(function(){
       $.getJSON('http://bitcoincharts.com/t/weighted_prices.json',function(data){
               $("#results").html(data[0].30d);
       });
});
</script>

我尝试抓住USD&gt; 30d&gt; 5.2016

2 个答案:

答案 0 :(得分:1)

获得美元 - &gt; 30d(= 5.2016)你需要这样做:

data["USD"]["30d"]

你不能说data[0]因为使用数字索引(通常)只适用于数组而你没有数组。您有一个具有两个属性“USD”和“GBP”的对象,并且每个属性都有一个对象,其属性为“7D”,“30d”,“24h”。

更详细:

JavaScript array 文字声明使用方括号,其中只包含元素列表,如下所示:

var myArray = ["a","b","c"];

object 文字声明使用大括号和键值对,就像你在问题中提供的JSON一样,或者这是一个更简单的例子:

var myObject = { "key1" : "value1", "key2" : "value2", "key3" : "value3" };

“技巧”是一旦定义了数组和对象都使用方括号表示法访问,但数组使用数字索引,对象使用字符串键。

您也可以使用像您尝试的那样使用点符号,但仅限于符合有效JavaScript标识符规则的键名称的属性,即不以数字开头,不以空格开头,不是保留字等等这些限制仅适用于点表示法,因此如果使用方括号表示法,则可以使用空格,数字等。

嵌套数组和对象很好,包括将两者混合在一起,但在特定情况下,你只有一个包含两个其他对象的对象,没有数组。

所以data["USD"]会给你{"7d": "4.4549", "30d": "5.2016", "24h": "4.1373"}

data["GBP"]会给你{"7d": "2.9706", "30d": "3.2620", "24h": "2.5463"}

您可以使用data["USD"]["30d"]将其缩小到所需的个人值。

编辑:由于Ajax同源策略,您的$.getJSON请求无法正常工作,即只允许您向与当前页面相同的域发出JSON请求。< / strong>

您可以尝试使用JSONP - jQuery支持您几乎没有任何努力:您只需将?callback=?添加到URL的末尾 - 除了JSONP需要服务器上的支持并且它看起来像比特币人们不支持它。

因此,最简单的方法是在您的服务器端代码中获取数据,其中同源策略不会妨碍您。

答案 1 :(得分:0)

我现在很难找到引用,但问题是您无法通过点表示法访问密钥,您需要通过数组表示法访问它。在你的情况下......

data[0]["30d"]