2017-01-20 10 views
-1

Ich habe Probleme beim Abrufen von Strings aus dem von Google Finance API bereitgestellten JSON. Erhalte "undefined" beim Debuggen. . Im folgenden Beispiel interessiert mich das Symbol (t) und der aktuelle Preis (l).Wie bekomme ich eine Zeichenfolge vom JSON-Objekt-Array?

$.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

Lesen Sie einige Dokumentation über Arrays und Objekte. 'Stocks' ist ein Array. – dfsq

+0

Sie sollten ein Beispiel für die Ausgabe hinzufügen. – Sirko

+0

@Sirko Wenn er wüsste, wie man eine Ausgabe bekommt, wäre er wahrscheinlich in der Lage, dieses einfachste Problem zu lösen. – dfsq

Antwort

0

Stocks.l ist nicht definiert, da Stocks/die Antwort, die Sie erhalten, ein Array ist, kein einzelnes Objekt.

Für den Fall, dass Sie ein Array mit mehreren Objekten erhalten, würde ich eine Schleife verwenden - wenn es ein Array mit nur einem Element ist, schadet die Schleife nicht. Im Folgenden verwendet es6 Objekt Destrukturierung, so dass sich bewusst sein, dass es zur Zeit nicht in jedem Browser funktionieren:

$.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>

Die ES5 Variante somehting wie

$.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>
wäre

0

Die Antwort ist ein Array von Objekten:

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

So die Objekteigenschaften zugreifen müssen Sie in das Array bohren zuerst das Element, die Sie wollen:

json[0].t //gets prop "t" of elem at index 0 of array, returns "TSLA" 
Verwandte Themen