Ir para o conteúdo

Deserializando JSON no Android com o GSON


Criado por Metzen, Set 30 2010 15:27

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 Metzen

Metzen
  • Metzen
  • Colaborador
  • 2 Revisões

Revisou 30 setembro 2010 - 15:27

O jeito mais facil de serializar/deserializar JSON no android é usando a biblioteca GSON do Google. Ela contem praticamente tudo que você precisa para conectar sua aplicação android a web services que retornam JSON.

Download the GSON library
Visite o site do projeto GSON e baixe a versão mais atual da biblioteca.

Não se esqueça de importa-la corretamente no seu projeto Android. No Eclipse você pode seguir os seguintes passos:

Project > Properties > Java Build Path > Libraries > Add Jars…

Iniciando o deserializador
Vamos inicializar nosso deserializador com o seguinte código:

String jsonData = "[Insert JSON data here]";
 
GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();
 
JSONObject j;
Gig gig = null;
 
try
{
    j = new JSONObject(jsonData);
    gig = gson.fromJson(j.toString(), Gig.class);
}
catch(Exception e)
{
    e.printStackTrace();
}

Primeiramente, tenha certeza que você tem dados JSON prontos para parsear. Você pode obte-los através de uma chamada a web services ou qualquer outro método que retorne dados JSON. Em seguida inicialize a biblioteca GSON usando o GSON builder para criar o objeto GSON.

Depois de inicializar nossas variaveis iremos parsear o jsonData para dentro do JSONObject, que será apenas um objeto que representará os dados do JSON.

Uma vez que temos o JSONObject, nós podemos tentar deserializa-lo para um java object usando o método fromJson. Para fazer isso nós passamos o objeto JSON criado anteriorment, e a classe para qual gostariamos de deserializar. Se uma propriedade não é encontrada nos dados JSON, ela será deixada com o valor null. Caso uma propriedade dentro dos dados JSON não for parte da classe que você escolheu, ela será ignorada.




1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)