Mobile

Android – Consumindo JSON com SpringAndroid

 

Dando continuidade à série de desenvolvimento de aplicações REST com Spring, neste post eu darei um exemplo de como consumir JSON nas suas aplicaçoes Android com a utilização do Spring.

Quem não leu o post anterior, eu sugiro que o faça em, pois ele contempla alguns aspectos de configuração do ANDROID que não serão replicados neste post.

As implementações demonstradas a seguir exibem o consumo de um serviço REST simples criado por mim que fornece uma lista de contatos.

 

Neste exemplo, básicamente as únicas alterações que realizaremos em comparação com o post anterior, serão a utilização de um novo MessageConverter e algumas anotações nos nossos POJOs.

Para este exemplo, precisaremos das seguintes dependências descritas em nosso pom.xml:

[cc lang=”xml” width=”100%”] 2.3.3 1.0.0.RELEASE
1.9.5
2.6.4



com.google.android
android
${platform.version}
provided


org.springframework.android
spring-android-rest-template
${spring-android-version}



org.codehaus.jackson
jackson-mapper-asl
${jackson-version}


org.simpleframework
simple-xml
${simple-version}



stax
stax


stax-api
stax



xpp3
xpp3



[/cc]

 

O método que realiza a a chamada ao serviço deve ter o seguinte formato:

[cc lang=”java” width=”100%”]

public void recuperarContatos(final View v) {

RestTemplate restTemplate = new RestTemplate();

List> messageConverters = new ArrayList>();
messageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);

restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());

Contatos contatos = restTemplate.getForObject(“http://192.168.16.148:8080/rest/contatos”, Contatos.class);

// Tratamento com os contatos recebidos.

}
[/cc]

Inicialmente, assim como no exemplo anterior, definimos o nosso RestTemplate, adicionamos uma request factory (para que o template saiba realizar nosso request ao serviço) e um message converter que serialize o JSON recebido e o salvaremos em um POJO descrito por nós. Este POJO, que será descrito a seguir, deve possuir os campos com nomes exatamente iguais aos retornados pelo serviço, para que saiba fazer a serialização.

Para a leitura do JSON recebido, definimos os seguintes POJOs:

[cc lang=”java” width=”100%”]

@JsonIgnoreProperties(ignoreUnknown = true)
public class Contatos {

private Collection contatoList;

// Getters, Setters e Construtores…

}

[/cc]

[cc lang=”java” width=”100%”]

@JsonIgnoreProperties(ignoreUnknown = true)
public class Contato {

private String nome;

private String celular;

private String email;

private String twitter;

private String facebook;

// Getters, Setters e Construtores…

}
[/cc]

Como pode-se notar, definimos o POJO que contém as propriedades e um outro que possui uma lista deste objeto. Desta forma, o Jackson JSON Processor consegue serializar o JSON recebido tranquilamente. A única medida de precaução que devemos tomar para evitar problemas com a nossa aplicação, é adicionar a anotação @JsonIgnoreProperties(ignoreUnknown = true) em nossas classes, para que uma possível falta de propriedades em nossas classes em comparação com o JSON recebido não resulte em um “crash” na aplicação.

Este foi mais um post da série Android, espero que tenham gostado. Quaisquer dúvidas, sugestões e/ou reclamações, comentem!

_________________________________________

Lucas Oliveira – Analista Programador na redspark.
Bacharel em Sistemas de Informação pela Universidade de São Paulo.
@OliveiraLima_

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Compartilhe isso: