Ir para o conteúdo

Metzen

Cadastrado: 30 Set 2010
Offline Última atividade: Out 20 2010 09:12
-----

#78 Deserializando JSON no Android com o GSON

Postado por Metzen em 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.


#75 Criando uma imagem a partir de uma URL

Postado por Metzen em 30 setembro 2010 - 14:55

O código abaixo é um snippet que retorna um objeto Bitmap a partir de uma URL dada.

public Bitmap getRemoteImage(final URL aURL)
{
    try
    {
        final URLConnection conn = aURL.openConnection();
        conn.connect();
        final BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
        final Bitmap bm = BitmapFactory.decodeStream(bis);
        bis.close();
        return bm;
    } 
    catch (IOException e)
    {
        Log.d("DEBUGTAG", "Oh noooz an error...");
    }

    return null;

}

Retirado de anddev.org