2017-01-20 115 views
-1

我有問題從谷歌金融API提供的JSON中的任何字符串。當我調試時獲取「未定義」。 。下面的例子中,我對符號(t)和當前價格(l)感興趣。如何從json對象數組中獲取字符串?

$.getJSON("http://finance.google.com/finance/info?client=ig&q=TSLA&callback=?", 
     function(json) { 
     var Stocks = json; 
     var text =""; 
     text = Stocks.l + " is the current stock price for: " + Stocks.t; 
     document.getElementById('Textn').innerHTML = text; 

     }); 
+0

閱讀有關數組和對象的一些文檔。 '股票'是一個數組。 – dfsq

+0

您應該添加一個輸出示例。 – Sirko

+0

@Sirko如果他知道如何獲得輸出,他可能會解決這個最簡單的問題。 – dfsq

回答

0

Stocks.l是未定義的,因爲股票/你得到的迴應是一個數組,而不是一個單一的對象。

爲防萬一你接收到一個包含多個對象的數組,我會使用一個循環 - 如果它是一個只有一個元素的數組,循環沒有任何危害。下面使用ES6對象解構,所以要知道,它不會在每個瀏覽器目前的工作:

$.getJSON("https://finance.google.com/finance/info?client=ig&q=TSLA&callback=?", json => { 
 
    for (let {l, t} of json) { 
 
    let text = l + " is the current stock price for: " + t; 
 
    document.getElementById('Textn').innerHTML += text; 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><div id="Textn"> 
 

 
</div>

的ES5變種會服用點像

$.getJSON("https://finance.google.com/finance/info?client=ig&q=TSLA&callback=?", function(json) { 
 
    json.forEach(function(v) { 
 
    var text = v.l + " is the current stock price for: " + v.t; 
 
    document.getElementById('Textn').innerHTML += text; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="Textn"> 
 

 
</div>

0

的響應是對象的數組:

[ 
    { 
    "id": "12607212", 
    "t" : "TSLA", 
    "e" : "NASDAQ" 
    //etc 

所以訪問對象的屬性,您將需要鑽到陣列率先拿到你想要的元素:

json[0].t //gets prop "t" of elem at index 0 of array, returns "TSLA" 
相關問題