2017-01-20 20 views
-1

私はGoogle Finance apiによって提供されているjsonからの文字列のいずれかに問題があります。私がデバッグしているときに "undefined"を得る。 。下の例では、記号(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

アレイとオブジェクトに関するドキュメントを参照してください。 'Stocks'は配列です。 – dfsq

+0

出力の例を追加する必要があります。 – Sirko

+0

@Sirkoもし彼が出力を得る方法を知っていたら、おそらくこの最も簡単な問題を解決することができます。 – dfsq

答えて

0

Stocks.lは未定義です。取得するレスポンスは配列であり、単一のオブジェクトではありません。

複数のオブジェクトを持つ配列を受け取った場合は、ループを使用します.1つの要素だけの配列の場合、ループは問題ありません。以下は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>
のようなsomehtingだろう

0

応答はオブジェクトの配列である:

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

だから、あなたが欲しい要素を取得するために、最初の配列をドリルダウンする必要がありますオブジェクトのプロパティにアクセスするには:

json[0].t //gets prop "t" of elem at index 0 of array, returns "TSLA" 
関連する問題