2017-06-27 2 views
0

JSON- https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demoParsing JSON und Laden in Array

Ich versuche, die JSON aus dem obigen Link zu nehmen und es in folgendem Format (Datum, offen, hoch, tief, in der Nähe) legen ...

[ 
[1277424000000,38.58,38.61,37.97,38.10], 
[1277683200000,38.13,38.54,37.79,38.33], 
[1277769600000,37.73,37.77,36.33,36.60], 
[1277856000000,36.67,36.85,35.72,35.93], 
] 

Das Datum hat nicht Notwendigkeit Epoch Zeit.

Mein Code ....

$.getJSON('https://www.alphavantage.co/query? 
function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demo', function(data) { 
//Get the time series data 
var timeseries = data['Time Series (Daily)'] 
var ohlcarray = []; 
//Loop through each time series and convert it to JSON format 
    $.each(timeseries, function(key, value) { 
     var ohlcdata=[]; 
     ohlcdata[0]=value[0];//date 
     ohlcdata[1]=value[1];//open 
     ohlcdata[2]=value[2];//high 
     ohlcdata[3]=value[3];//low 
     ohlcdata[4]=value[4];//low 
     ohlcarray.push(ohlcdata); 
    }); 
console.log(ohlcarray[0]);//test if worked properly 
}); 

Der Ausgang ....

[undefined, undefined, undefined, undefined, undefined] 

Wert [x] gibt undefined zurück. Irgendwelche Ideen, warum das passiert?

Danke!

+2

versuchen 'data = JSON.parse (Daten);', wie Sie es in den Rückruf erhalten – EvgenyKolyakov

+2

'value' kein Array ist, dann ist es ein weiteres Ziel mit den Tasten wie' 1. offen' und '2. hoch ". Es würde also wie 'Wert [' 1 'zugegriffen werden. open '] ' –

+1

@EvgenyKolyakov, [' getJSON'] (http://api.jquery.com/jQuery.getJSON/) analysiert JSON automatisch, wobei 'JSON.parse' in' data' zu einem Fehler führen würde ist bereits ein Objekt –

Antwort

1

Der Grund dafür ist, dass in der each Schleife, die value keine Liste, sondern ein Objekt. Um darauf zuzugreifen, müssen Sie es mit Schlüsseln greifen.

ohlcdata[0] = key; //date 
ohlcdata[1] = value['1. open']; //open 
ohlcdata[2] = value['2. high']; //high 
ohlcdata[3] = value['3. low']; //low 
ohlcdata[4] = value['4. close']; //low 

https://jsfiddle.net/koralarts/7c2fkf93/2/

0

An diesem Punkt ist es bereits JSON. Wie Patrick bereits erwähnt hat, analysiert getJSON json automatisch. Sie müssen darauf mit der Array-Klammer-Notation zugreifen, da Leerzeichen im Namen der Eigenschaft vorhanden sind.

var timeSeries = data['Time Series (Daily)']; 

See ab: https://jsfiddle.net/dz0phhn2/6/

+0

Sie hatten bereits das in der OP ... –

+0

I Siehe das Problem mit den verschachtelten Eigenschaften, ich werde das Beispiel aktualisieren. – dotKn0ck