2013-11-27 112 views
1

我正在使用Google Apps腳本,試圖將比特幣兌換率信息導入Google電子表格。我用這個代碼:Google Apps腳本搞亂了JSON值

var url = "https://btc-e.com/api/2/btc_usd/ticker"; 
var response = UrlFetchApp.fetch(url); 
var json = response.getContentText(); 
var lcharts_data = JSON.parse(json) 

function bitcoin(){ 
    var b = lcharts_data["ticker"]["avg"]; 
    return b; 
} 

的JSON文件看起來是這樣的:

{"ticker": 
    {"high":947.99902, 
    "low":817.64001, 
    "avg":882.819515, 
    "vol":24625847.06001, 
    "vol_cur":28189.09956, 
    "last":930, 
    "buy":930, 
    "sell":929.998, 
    "updated":1385575341, 
    "server_time":1385575342} 
    } 
} 

然而b回報爲22.49。我究竟做錯了什麼?

+0

您的代碼按預期工作。請不要使用'JSON.parse()'而不要使用'Utilities.jsonParse()',因爲後者已被棄用。 –

+0

@JacobJanTuinstra我在[Googles Apps腳本文檔](https://developers.google.com/apps-script/reference/utilities/utilities#jsonParse(String))上看不到後者已被棄用? – dev

+0

@vletech請參閱11月18日:https://developers.google.com/apps-script/releases/#november_2013 –

回答

0

我使用類似的方法來接收數據,但我解析它有點不同。例如:

var url = "https://btc-e.com/api/2/btc_usd/ticker"; 
var response = UrlFetchApp.fetch(url); 
var json = response.toString(); 
var lcharts_data = JSON.parse(json); 

通知的toString()方法和本機方法Utilities.jsonParse()。我試過JSON.parse(),但那對我不起作用。

也正在使用API​​密鑰訪問數據?已經嘗試過以上,但它是超時。

+0

這個工作適合你嗎? – user3042831

+0

@ user3042831上面提到的方法適用於我使用的不同API服務,但我無法測試您的硬幣,因爲我沒有得到響應。 – dev

+0

由於@JacobJanTuinstra指出'Utilities.jsonParse()'已被棄用(但目前仍在工作),但改變爲'JSON.parse()'的結果並沒有不同。 – dev

0

截至當我測試您的網址,JSON響應返回信息:

{ 
"ticker":{ 
    "high":421.70001, 
    "low":418, 
    "avg":419.850005, 
    "vol":2361935.91952, 
    "vol_cur":5620.41595, 
    "last":420.168, 
    "buy":420.168, 
    "sell":419.853, 
    "updated":1460626271, 
    "server_time":1460626273 
    } 
} 

下面是返回「平均」值的代碼:

var url = "https://btc-e.com/api/2/btc_usd/ticker"; 
var response = UrlFetchApp.fetch(url); 
var json = response.getContentText(); 
var lcharts_data = JSON.parse(json); 

function bitcoin(){ 
    var b = lcharts_data.ticker.avg; 
    return b; 
}