2016-12-14 95 views
2

我試圖從http://api.fixer.io/latest?base=USD它包含的JavaScript對象`轉換JSON對象數據如何JSON對象轉換爲JavaScript對象

{ 
    "base": "USD", 
    "date": "2016-12-14", 
    "rates": { 
     "AUD": 1.3319, 
     "BGN": 1.8375, 
     "BRL": 3.311, 
     "CAD": 1.3116, 
     "CHF": 1.0097, 
     "CNY": 6.9052, 
     "CZK": 25.388, 
     "DKK": 6.986, 
     "GBP": 0.78883, 
     "HKD": 7.7566, 
     "HRK": 7.0843, 
     "HUF": 295.84, 
     "IDR": 13288, 
     "ILS": 3.8097, 
     "INR": 67.479, 
     "JPY": 114.98, 
     "KRW": 1166, 
     "MXN": 20.262, 
     "MYR": 4.4441, 
     "NOK": 8.4764, 
     "NZD": 1.3849, 
     "PHP": 49.716, 
     "PLN": 4.1716, 
     "RON": 4.2421, 
     "RUB": 61.197, 
     "SEK": 9.1651, 
     "SGD": 1.424, 
     "THB": 35.59, 
     "TRY": 3.4879, 
     "ZAR": 13.67, 
     "EUR": 0.9395 
    } 
} 

我已經在控制檯

var text = $.getJSON('http://api.fixer.io/latest?base=GBP') 
var obj = JSON.parse(text); 

到目前爲止已經試過這給我一個錯誤。

var text = $.getJSON('http://api.fixer.io/latest?base=GBP') 
var obj = JSON.stringify(text, 0, 2) 

它把所有東西都變成了字符串,這不是我想要的東西。

我想實現(後設法將它們轉換爲對象)

obj.rates.AUD 

這將返回值1.3319是從JSON對象數據。謝謝

+3

「這給了我一個錯誤。」什麼是錯誤? – Eric

+0

我首先遇到了http/https錯誤,您可能需要刪除該協議。 – wyldstallyns

+0

請閱讀文檔:https://api.jquery.com/jquery.getjson/。 –

回答

1

如果您只是查看該請求的響應,您可以看到JSON屬於responseText屬性的內部。只要做到:

var obj = JSON.parse(text.responseText); 

此外,的getJSON是一個異步調用,所以你需要做到這一點的回調,否則反應可能尚不存在:

var obj; 
var text = $.getJSON('http://api.fixer.io/latest?base=GBP', function() { 
    obj = JSON.parse(text.responseText); 
}); 

編輯:正如評論者指出的那樣,你也可以只得到JSON直接從responseJSON屬性:

var obj; 
var text = $.getJSON('http://api.fixer.io/latest?base=GBP', function(){ 
    obj = text.responseJSON; 
}); 
+0

在Chrome中,它似乎已經在解析response.responseJSON – wyldstallyns

+0

你也可以從responseJSON中獲得它! – Pabs123

+0

根據Paulpro的回答,JSON響應也作爲參數傳遞給回調函數。 – Andy

3

jQuery的getJSON解析JSON你,但該請求是異步的,所以它不會返回直接回覆文本;相反,它返回jqXHR object

這應該爲你工作:

$.getJSON('http://api.fixer.io/latest?base=GBP').then(function (obj) { 
    console.log(obj); 
}); 
0

不要使用JSON.parse()JSON.stringify()。正如在jquery文檔$.getJSON(url , callback)中所演示的那樣需要回調。另外$ .getJSON()在幕後使用$ .parseJSON(),因此默認情況下會將對象傳遞到回調函數中。

您的問題..

var text = $.getJSON('http://api.fixer.io/latest?base=GBP') < - 返回任何

解決方案..添加一個回調函數

var text = $.getJSON('http://api.fixer.io/latest?base=GBP' , function(response){ 

console.log(response.rates.AUD); 

}) 

文檔: http://api.jquery.com/jquery.getjson/

希望這有助於。