Manipulando strings

13 respostas
guisantogui

Preciso verificar o tipo de uma variavel que esta chegando de um código em ruby, segue o fonte:

<%= javascript_tag do %> var locsjs = <%= locs.to_json%>; <% end %>

como eu posso ver o tipo da variavel “locsjs”?

13 Respostas

perdeu

tente typeof ();

guisantogui

Isso funcionou, mas estou com um problema mais grave que esse,

Eu tenho a seguinte string (que parece um json, mas é uma string):

e eu tenho que pegar todas latitudes e longitudes, mas tudo que eu tentei, não funcionou :confused:

WRYEL

guisantogui:
Isso funcionou, mas estou com um problema mais grave que esse,

Eu tenho a seguinte string (que parece um json, mas é uma string):

e eu tenho que pegar todas latitudes e longitudes, mas tudo que eu tentei, não funcionou :/

eval() neles!
fonte: http://www.json.org/js.html

[]'s

perdeu

tente ler como um array.

guisantogui

Cara tentei usar esse eval, mas não tá rolando, não tem nenhum exemplo pra me mostrar?

A

Se parece com um json pode user JSON.parse.

Exemplo:

var s = '[{"account_id":2,"created_at":"2012-02-24T15:52:56-02:00","date":"2012-02-24T15:52:55-02:00","id":3,"latitude":"35.422005","longitude":"-125.084095","updated_at":"2012-02-24T15:52:56-02:00"},{"account_id":2,"created_at":"2012-02-24T15:53:14-02:00","date":"2012-02-24T15:53:14-02:00","id":4,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-24T15:53:14-02:00"},{"account_id":2,"created_at":"2012-02-27T10:15:08-03:00","date":"2012-02-27T10:15:08-03:00","id":5,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:08-03:00"},{"account_id":2,"created_at":"2012-02-27T10:15:23-03:00","date":"2012-02-27T10:15:23-03:00","id":6,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:23-03:00"},{"account_id":2,"created_at":"2012-02-27T10:27:49-03:00","date":"2012-02-27T10:27:49-03:00","id":7,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:27:49-03:00"},{"account_id":2,"created_at":"2012-02-27T10:29:27-03:00","date":"2012-02-27T10:29:27-03:00","id":8,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:29:27-03:00"},{"account_id":2,"created_at":"2012-02-27T10:32:31-03:00","date":"2012-02-27T10:32:31-03:00","id":9,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:32:31-03:00"}]';

            var obj = JSON.parse(s);

            var coordenadas = [];
            for (var i in obj) {
                coordenadas.push({latitude: obj[i].latitude, longitude: obj[i].longitude});
            }

            console.log(coordenadas);

A variável coordenadas te retorna uma coleção de objetos com propriedades latitude e longitude.

Falou.

wagnerfrancisco

Se parece com um json pode user JSON.parse.

Exemplo:

var s = '[{"account_id":2,"created_at":"2012-02-24T15:52:56-02:00","date":"2012-02-24T15:52:55-02:00","id":3,"latitude":"35.422005","longitude":"-125.084095","updated_at":"2012-02-24T15:52:56-02:00"},{"account_id":2,"created_at":"2012-02-24T15:53:14-02:00","date":"2012-02-24T15:53:14-02:00","id":4,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-24T15:53:14-02:00"},{"account_id":2,"created_at":"2012-02-27T10:15:08-03:00","date":"2012-02-27T10:15:08-03:00","id":5,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:08-03:00"},{"account_id":2,"created_at":"2012-02-27T10:15:23-03:00","date":"2012-02-27T10:15:23-03:00","id":6,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:23-03:00"},{"account_id":2,"created_at":"2012-02-27T10:27:49-03:00","date":"2012-02-27T10:27:49-03:00","id":7,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:27:49-03:00"},{"account_id":2,"created_at":"2012-02-27T10:29:27-03:00","date":"2012-02-27T10:29:27-03:00","id":8,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:29:27-03:00"},{"account_id":2,"created_at":"2012-02-27T10:32:31-03:00","date":"2012-02-27T10:32:31-03:00","id":9,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:32:31-03:00"}]';

            var obj = JSON.parse(s);

            var coordenadas = [];
            for (var i in obj) {
                coordenadas.push({latitude: obj[i].latitude, longitude: obj[i].longitude});
            }

            console.log(coordenadas);

A variável coordenadas te retorna uma coleção de objetos com propriedades latitude e longitude.

Falou.

WRYEL

complementando o exemplo do wagner, segue o exemplo que eu testei aqui e funcionou:

parsedJason = eval('[{"account_id":2,"created_at":"2012-02-24T15:52:56-02:00","date":"2012-02-24T15:52:55-02:00","id":3,"latitude":"35.422005","longitude":"-125.084095","updated_at":"2012-02-24T15:52:56-02:00"},{"account_id":2,"created_at":"2012-02-24T15:53:14-02:00","date":"2012-02-24T15:53:14-02:00","id":4,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-24T15:53:14-02:00"},{"account_id":2,"created_at":"2012-02-27T10:15:08-03:00","date":"2012-02-27T10:15:08-03:00","id":5,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:08-03:00"},{"account_id":2,"created_at":"2012-02-27T10:15:23-03:00","date":"2012-02-27T10:15:23-03:00","id":6,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:15:23-03:00"},{"account_id":2,"created_at":"2012-02-27T10:27:49-03:00","date":"2012-02-27T10:27:49-03:00","id":7,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:27:49-03:00"},{"account_id":2,"created_at":"2012-02-27T10:29:27-03:00","date":"2012-02-27T10:29:27-03:00","id":8,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:29:27-03:00"},{"account_id":2,"created_at":"2012-02-27T10:32:31-03:00","date":"2012-02-27T10:32:31-03:00","id":9,"latitude":"32.422005","longitude":"-122.084095","updated_at":"2012-02-27T10:32:31-03:00"}]';
		for (int x = 0; x < parsedJason.length; x++) {
			alert(parsedJason[x].account_id);
		}

[]'s

guisantogui

tentei fazer assim:

//Essa parte pega o valor do ruby e joga pro Json
&lt;%= javascript_tag do %&gt;
	var locsjs = "&lt;%= locs.to_json%&gt;";
&lt;% end %&gt;

tenta pegar os valores no json
&lt;script type="text/javascript"&gt;
       var ts = JSON.parse(locsjs);
	var coordenadas = [];  
	for (var i in obj) {  
    	       coordenadas.push({latitude: obj[i].latitude, longitude: obj[i].longitude});  
	}  

	document.write(coordenadas[0]);
&lt;/script&gt;

Cara, não sei o que está acontecendo, mas ele não ta executando o parse, eu coloquei uns alerts para testar.

wagnerfrancisco

Se o teu browser for muito antigo e não suportar EcmaScript 5 você provavelmente não tem o parser. Nesse caso, se quiser, pode baixá-lo aqui:

É o json2.js.

Ou você pode utilizar a solução que o WRYEL apresentou.

Tenta usar o console do browser (ou no firefox o firebug) pra debugar o que tá acontecendo!

Falou.

guisantogui

A versão do navegador não é, estou no firefox 10.0.2,

eu use o inspect do próprio firefox, e vi que pode ser um problema com os espaços do HTML, mas não tenho certeza, eu pegeui isso:

Está com “&qu0t;” ao invés de espaço.

WRYEL

Bom, já sabemos que funciona, agora o problema está do seu lado :smiley:

tenta trocar

var locsjs = "[{"a ...";

por

var locsjs = '[{"a ...'; // espas simples no começo.

[]'s

guisantogui

Consegui fazer funcionar, tive que dar uns splits e mais uns substrings, mas funcionou! :slight_smile:

Criado 27 de fevereiro de 2012
Ultima resposta 28 de fev. de 2012
Respostas 13
Participantes 5