Tag JSon

Juntando Mobile, REST e JSON

Juntando Mobile, REST e JSON

Neste post anterior em nosso blog, falamos a respeito de como converter dados entre os formatos JSON e XML no Magic xpa.

Vamos agora mostrar um exemplo prático, aplicável.

Existe um Webservice gratuito do Google, no padrão REST, que retorna o valor atualizado (on-line) da cotação entre várias moedas.

O endereço deste Webservice é http://rate-exchange.appspot.com.

Os dados de consulta são informados todos na URL de acesso:

Imagem_001

E o retorno dele é no formato JSON:

Imagem_002

Criaremos então uma aplicação Magic xpa RIA, para Mobile, que faz a mesma coisa.

Leia mais…

JSON em .NET com o Magic xpa

JSON em .NET com o Magic xpa

O formato JSON de estrutura de dados tem se tornado cada vez mais popular, em virtude do aumento da oferta de webServices REST.

Na biblioteca nativa do Magic xpa (uniPaaS), contudo, não encontramos (ainda) funções/rotinas específicas para criar ou ler conteúdos neste formato.

Apenas rotinas para XML estão disponíveis.

Por isso que para manipular dados recebidos no formato JSON, no Magic xpa, precisamos primeiro convertê-los para XML. E quando precisamos disponibilizar dados em JSON, fazemos a conversão inversa: XML para JSON.

Neste post anterior, mostramos como usar classes Java para fazer esta conversão (tanto no Magic xpa quanto no Magic xpi (iBOLT) ).

Mas é claro que esta não é a única maneira.

A conversão pode também ser feita via .NET. É Inclusive mais prático fazer desta forma com o Magic xpa (2.0 ou RIA).

Neste outro post, citamos um exemplo envolvendo HASH para mostrar que sempre que necessitarmos uma funcionalidade (ou rotina) nova no Magic xpa, podemos facilmente criá-la com o .NET e incorporá-la à nossa solução.

No caso do JSON não seria diferente.

Podemos criar a rotina de conversão, nativamente no Magic xpa:

 

 

Leia mais…

Utilizando JSON em projetos iBOLT e uniPaaS

Jeronimo Costa

O padrão de notação JSON (“JavaScript Object Notation” http://en.wikipedia.org/wiki/JSON) tem sido bastante utilizado na troca de informações entre aplicações WEB atualmente, isto porque existem alguns ganhos como quantidade de bytes se comparado com XML (http://en.wikipedia.org/wiki/JSON#Comparison_with_other_formats) e o fato de não ser necessário a utilização de parse mais apurado como XML.

Como em nossa tecnologia (iBOLT e uniPaaS) existe a grande facilidade de trabalhar com XML, que tal convertermos JSON para XML? A idéia deste post é se utilizar de um componente JAVA já desenvolvido para o tratamento de JSON e incluir em nossa solução um componente reutilizável para iBOLT e invocar este código JAVA no uniPaaS.

As referências do nosso post são:

1)      http://json.org: Descrição de toda notação JSON

2)      http://json.org/java/: Código Java que iremos utilizar em nossa solução iBOLT e uniPaaS

3)      http://download.oracle.com/javase/6/docs/technotes/tools/windows/javac.html: Como compilar o código extraído do item 2

4)      http://download.oracle.com/javase/6/docs/technotes/tools/windows/jar.html: Como gerar o arquivo .jar para ser incluído na biblioteca do iBOLT e uniPaaS

5)      http://devnet.magicsoftware.com/en/library?book=en/uniPaaS/&page=Java_Integration/Type_Signatures.htm: Como saber a assinatura de um objeto JAVA para ser utilizado em uniPaaS.

 

Preparando nossa biblioteca escrita em JAVA

Faça o download do código fonte que está no item 2 da nossa referência. Neste exemplo colocarei na pasta C:\POST, para seguir a estrutura do JAVA. Como o código foi desenvolvido dentro de um pacote org.json, coloque os arquivos dentro de uma estrutura de pasta org\json, então coloque todos os arquivos no caminho C:\POST\org\json. Veja como ficou nossa estrutura:

Para facilitar o nosso teste no iBOLT e uniPaaS, vamos criar um novo código JAVA, este código fará a conversão do objeto JSON em XML e vice-versa.

Crie um novo arquivo chamado Conversor.java e inclua o seguinte código:

Agora vamos compilar todos estes arquivos *.java, executando simplesmente o comando javac *.java, veja como foi o resultado:

Agora vamos juntar todos os *.class em um único pacote, basta ir para a pasta C:\POST e rodar o comando jar -cvf json.jar org\json\*.class, veja como foi o resultado:

Pronto na pasta C:\POST foi gerado o arquivo json.jar que vamos utilizar no iBOLT e uniPaaS.

 

Utilizando em iBOLT

Como o iBOLT tem a possibilidade de expandir a capacidade de sua lista de componentes, utilizando o item componente SDK (http://devnet.magicsoftware.com/en/library?book=en/iBOLT/&page=Component_SDK.htm) vamos incluir um novo componente que será capaz de converter um formato JSON para XML e ao contrário.

Pegue o arquivo json.jar gerado no item anterior e coloque na pasta <ibolt_home>\java\lib.

Acesse o menu Tools / Component SDK e clique em New.  Coloque as seguintes informações na tela:

 

Repare que o tipo é Java, e para ficar mais interessante copiei a imagem de http://json.org/img/json160.gif para <ibolt_home>icons\jsonifc.gif.

Clique em Methods e digite org.json.Conversor no campo class name, ao teclar tab aparecerão os métodos. Selecione somente os métodos toXML e toJSON. Veja:

Após clicar em load abrirá uma tela para melhorar a forma de configurar o nosso componente, neste passo é interessante colocar nomes amigáveis em Display Name, neste sentido vamos fazer as seguintes alterações:

No método toJSON, no parâmetro P1 colocar o display name para XML e no parâmetro P_Return colocar o display name para JSON. Em ambos os parâmetros altere o campo Picture para 32000.

No método toXML, no parâmetro P1 colocar o display name para JSON e no parâmetro P_Return colocar o display name para XML. Em ambos os parâmetros altere o campo Picture para 32000.

Clique em OK.

Para gerar o nosso componente e ser possível sua utilização clique em Generate e depois OK e pode fechar a tela atual.

O componente definido nos passos anteriores fica gravado na pasta <ibolt_home>\User resources\Components onde cada pasta significa um componente definido na tela do Componente SDK.

Sempre que precisar utilizar nos projetos o componente colocado no componente SDK você deve acionar o menu Project / Component clicando no botão Add.

Agora já temos um novo componente na lista de componente do iBOLT. Veja:

Agora podemos configurar os métodos, veja:

 

Observações que devem ser sempre seguidas em ambiente desenvolvimento e produção que utilizarem o componente em questão:

1)      O arquivo json.jar deve estar sempre no caminho <ibolt_home>\java\lib

2)      O componente SDK deve estar sempre na pasta <ibolt_home>\User resources\Components

 

Utilizando em uniPaaS

Para o uniPaaS carregar o arquivo json.jar criado anteriormente teremos que acrescentar no magic.ini na seção [MAGIC_JAVA] na configuração CLASSPATH o local onde o uniPaaS poderá encontrar o arquivo json.jar. Neste sentido iremos disponibilizar o arquivo json.jar em uma pasta na própria instalação do uniPaaS no local C:\MSE\uniPaaS1.9h\json por exemplo, veja:

Precisamos alterar no magic.ini na seção [MAGIC_JAVA] na configuração CLASSPATH informando o arquivo json.jar. Veja:

Agora vamos fazer o programa que invoca o código JAVA, imaginando que tivéssemos uma tela desta forma:

A referência da variável JSON é igual a “A” e a referência da variável XML é igual “B”. Basta utilizar a função JCallStatic. Nesta função precisamos passar o nome da classe e método, assinatura e parâmetros. No nosso caso as informações são:

Nome da classe = org.json.Conversor.toXML

Assinatura = (Ljava/lang/String;)Ljava/lang/String;  esta informação foi obtida utilizando a nossa referência do item 5.

O parâmetro = JSON que neste caso é a variável A.

Veja como fica nossa expressão:

A expressão acima está sendo utilizada em um update. Veja:

Executando e testando, veja que o objeto JSON é convertido em XML:

 

CONCLUSÃO

Com a implementação de uma nova funcionalidade em nossa ferramenta, colocamos em prática a possibilidade de interoperabilidade e aumento da capacidade em nossa ferramenta iBOLT e uniPaaS. Com isso, em um exemplo bem prático e simples colocamos a prova de como são simples e poderosas as nossas ferramentas.

Espero que este post tenha ajudado a enxergar no iBOLT e uniPaaS as ferramentas poderosas e versáteis que temos em nossas mãos.

 

Jeronimo Alberto da Costa 
Analista Programador / Magic Software Brasil