Tratar API com JSON
Buenas pepow....
Não manjo muito desses paranauê, mas consegui fazer umas coisa me baseando em códigos que achei na net, mas dei uma enroscada...
Tenho essa API: https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol=agro3&interval=1min&outputsize=full&apikey=P75WUJJ5C52V1SY1
Que me trás algo assim:
{
"Meta Data": {
"1. Information": "Intraday (1min) prices and volumes",
"2. Symbol": "agro3",
"3. Last Refreshed": "2017-09-13 14:09:00",
"4. Interval": "1min",
"5. Output Size": "Full size",
"6. Time Zone": "US/Eastern"
},
"Time Series (1min)": {
"2017-09-13 14:09:00": {
"1. open": "12.7400",
"2. high": "12.7400",
"3. low": "12.7400",
"4. close": "12.7400",
"5. volume": "200"
},
"2017-09-13 14:08:00": {
"1. open": "12.7200",
"2. high": "12.7200",
"3. low": "12.7200",
"4. close": "12.7200",
"5. volume": "400"
},
"2017-09-13 14:03:00": {
"1. open": "12.7200",
"2. high": "12.7200",
"3. low": "12.7200",
"4. close": "12.7200",
"5. volume": "100"
},
"2017-09-13 13:57:00": {
"1. open": "12.7400",
"2. high": "12.7400",
"3. low": "12.7400",
"4. close": "12.7400",
"5. volume": "500"
E estou tentando tratar ela com o código:
<?php
$ativo = 'CARD3';
header('Content-Type: application/json; charset=utf-8');
$json = file_get_contents('https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAY&symbol='.urlencode($ativo).'&interval=1min&outputsize=compact&apikey=P75WUJJ5C52V1SY1');
$obj = json_decode($json, true);
//pegar data da ultima atualização
foreach ($obj['Meta Data'] as $periodo)
{
echo $periodo. ' | ' ;
}
//pegar valor de fechamento
foreach ($obj['Time Series (1min)']['2017-09-12 15:55:00'] as $close)
{
echo $close. ' | ';
}
Até certo ponto está funcionado (apesar de dar umas bugadas de vez e quando qdo a data muda), estou conseguindo o esse resultado:
Intraday (1min) prices and volumes | CARD3 | 2017-08-30 16:09:00 | 1min | Compact | US/Eastern | 9.7000 | 9.9000 | 9.6300 | 9.6500 | 209200 |
Porem eu queria pegar só duas informações especificas dessa API, que seria o "3. Last Refreshed" para identificar o horário mais atual e jogar em uma variável, e com ela identificar o valor do "4. close" mais recente...
Pelo que eu achei que tinha entendido, seria só colocar o caminho todo, tipo :
($obj['Time Series (1min)']['2017-08-30 16:09:00']['4. close']
mas se faço isso da erro:
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/storage/ssd2/526/2780526/public_html/newEmptyPHP.php</b> on line <b>14</b><br />
Poderiam me dar uma luz?
GraciasDiscussão (2)
Carregando comentários...