não entendi o que vc quer fazer… vc tá dando um getJSON em outro site (isso já não funciona mto bem) e esse site vai retornar a função que vc vai executar?
salmaox
Acho que não ficou muito claro mesmo!
Então, eu tenho esse link http://www.comiteitajai.org.br/alerta/Alerta/json/ultimas.json que me devolve os dados na tela no formato JSON. Gostaria de armazená-los no banco de dados usando o Vraptor 3. Geralmente faz-se o caminho inverso né, pega-se os dados do banco e e devolve em formato JSON. O que eu gostaria de fazer é uma desserialização.
obrigado
Lucas_Cavalcanti
esse json é de outro sistema?
e vc quer fazer isso na página mesmo? por que não no servidor?
salmaox
sim, é de um cliente. Gostaria de pegar essas dados. Mas to meio perdido. Já li vários tópicos sobre o assunto mas não consegui absorver muita coisa…
Lucas_Cavalcanti
cara, o ideal é vc fazer isso a partir do seu servidor mesmo, com algum cliente http qualquer. Daí vc recebe o json e extrai os dados que você quer salvar no seu banco…
o $.getJSON não vai funcionar pois vc não pode fazer uma chamada ajax para outro site, você precisa usar jsonp (veja se esse servidor suporta isso), daí vc teria que transformar o json em dados de formulário e postar para o seu sistema.
salmaox
Lucas,
Consegui gerar um aquivo.json daquele link.
@Path("/")publicvoidindex()throwsMalformedURLException,IOException{InputStreaminput=null;OutputStreamoutput=null;try{input=newURL("http://www.comiteitajai.org.br/alerta/Alerta/json/ultimas.json").openStream();output=newFileOutputStream("c:/output.json");byte[]buffer=newbyte[1024];for(intlength=0;(length=input.read(buffer))>0;){output.write(buffer,0,length);}// Here you could append further stuff to `output` if necessary.}finally{if(output!=null)try{output.close();}catch(IOExceptionlogOrIgnore){}if(input!=null)try{input.close();}catch(IOExceptionlogOrIgnore){}}}
Como eu desserializo a partir desse arquivo?
obrigado
Lucas_Cavalcanti
use uma biblioteca que faz isso.. por exemplo o XStream, ou o GSon.
no caso do XStream (que já é dependência do VRaptor), vc deveria criar classes que representam a estrutura do json, e fazer o seguinte:
-receba um XStreamBuilder no construtor
-faça
[code]
XStream xstream = builder.jsonInstance();
SeuObjeto objeto = xstream.fromXML(input);
salmaox
eu tento receber um XStreamBuilder ele dá erro, não reconhece. Até baixei o jar xtream-1.4.2.jar mas lá me parece não ter essa classe
Lucas,
Mudei a versão do vraptor p/ 3.4.0 e consegui rodar o cód. No entanto está dando o seguinte erro “Caused by: java.lang.UnsupportedOperationException: The JsonHierarchicalStreamDriver can only write JSON”
@Path("/")publicvoidindex()throwsMalformedURLException,IOException{InputStreaminput=null;OutputStreamoutput=null;try{input=newURL("http://www.comiteitajai.org.br/alerta/Alerta/json/ultimas.json").openStream();output=newFileOutputStream("c:/output.json");byte[]buffer=newbyte[1024];for(intlength=0;(length=input.read(buffer))>0;){output.write(buffer,0,length);}XStreamxstream=newXStream(newJsonHierarchicalStreamDriver());xstream=builder.jsonInstance();Itajaiitajai=(Itajai)xstream.fromXML(input);//O ERRO ESTÁ NESSA LINHASystem.out.println(itajai);}finally{if(output!=null)try{output.close();}catch(IOExceptionlogOrIgnore){}if(input!=null)try{input.close();}catch(IOExceptionlogOrIgnore){}}}
obrigado
Lucas_Cavalcanti
precisa trocar o JsonHierarchical pelo JettisonMappedXmlDriver (tá no tutorial que eu te passei).