Usar getJSON para capturar dados de maneira mais eficaz

4 respostas
F

To tentando capturar os valores desta url com JSON:
http://openexchangerates.org/latest.json

É um site de conversão de moedas.
Usa-se o dolar como moeda base para conversão.

Na parte de ‘rates’ do json retornado, tem a sigla da moeda e o valor dela com base no dolar.

Eu queria tentar capturar os dados usando o getJSON e exibir atraves de um loop.

Mas até agra eu so consegui exibir a sigla das moedas usando um loop

$.getJSON("http://openexchangerates.org/latest.json",  
function(data){
	$.each(data.rates, function(i){
	console.log("xxx - "+i);    
	
	})
  });

agora precisava exibir tbm o valor junto com as siglas, mas nao sei como fazer, algém ai saberia como fazer?

4 Respostas

D

A função each recebe como segundo parêmetro uma função com dois parâmetros, sendo o primeiro o índice (a sigla no seu caso) e o segundo o valor do índice (o valor associado à sigla).
Mude seu código para:

$.getJSON("http://openexchangerates.org/latest.json", function(data){ $.each(data.rates, function( indice, valor ){ console.log( indice + " " + valor ); }); });

[]'s

F

Era isso mesmo que eu tava precisando, me ajudou bastante.

Gostaria de perguntar no caso do meu índice, que são as próprias siglas, seria possível criar um índice baseado em numero para cada uma das siglas.

Por exemplo:
array[0] = AED
array[1] = AFN
array[2] = ALL
array[3] = AMD

D

Oi Fábio,

É possível sim, basta criar um array e ir atribuindo os valores nos índices desejados, mantendo um contador que vai ser incrementado em cada iteração da função each.
Já apaguei o exemplo aqui, então não sei se o índice atual está ordenado.

[]'s

F
<script>
var mycurrencies = new Array();
indice = 0;
$.getJSON("http://openexchangerates.org/latest.json", function(data){  
     $.each(data.rates, function( sigla, valor ){  
          console.log( sigla + " " + valor + " - "+ indice);      
		  mycurrencies[indice]=valor;
		  indice++;
     });  
	 console.log(mycurrencies[1]);
});
console.log(mycurrencies[1]);
</script>

Consegui criar o indice como vc recomendou, eu achava que o proprio $.each ia fornecer os valores do indice,
mudei um pouco a sua função e funcionou , porém estou com um problema, mas parece que é problema de escopo.
Tenho o seguinte codigo

console.log(mycurrencies[1]); duas vezes no final do programa, mas somente o q está dentro do $.getJSON funciona, o q está fora do loop não funciona, eu achei q criando o vetor fora do loop ele conseguiria exibir as variaveis mesmo fora do loop, mas isso nao aconteceu.
Como posso corrigir isso?

Criado 22 de dezembro de 2011
Ultima resposta 23 de dez. de 2011
Respostas 4
Participantes 2