Gson – começando com Java-Serialização JSON & Desserialização

Após a publicação de mais de 50 Retrofit posts que reunimos feedback suficiente que uma grande quantidade de desenvolvedores gostaria de uma extensa introdução ao Google Gson. Gson é uma biblioteca muito poderosa para mapear estruturas de dados representadas como JSON para objetos Java. Claro, ele também suporta o contrário e pode criar uma representação JSON apropriada de seus objetos Java.Se você está interessado no rumo desta série, confira nosso esboço da série:Resumo das séries Gson

>

dependência do Gson

este guia será prático e começará com alguma serialização em um minuto. Uma vez que muitos dos nossos leitores são Desenvolvedores Android, vamos personalizá-lo para você, mas Gson pode ser usado em qualquer ambiente Java. Antes de começarmos, precisamos de puxar a biblioteca Gson para o nosso projecto. No momento da escrita,a última versão é 2.8.5. Se você está usando Gradle, adicione a seguinte linha:

implementation 'com.google.code.gson:gson:2.8.5' 

se estiver a usar o Maven, pode adicionar a seguinte dependência:

<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version> <scope>compile</scope> </dependency></dependencies> 

para os tipos pobres que não usam nenhum sistema de gestão de dependências, você pode baixar o jar no repositório oficial do GitHub.

Basics of Java-JSON Serialization

So let’s do some serialization! Serialização no contexto do Gson significa mapear um objeto Java para sua representação JSON. Nos próximos tutoriais nossos dados vão ficar mais complexos, mas por agora vamos começar com um objeto muito simples UserSimple :

public class UserSimple { String name; String email; int age; boolean isDeveloper;}

o objecto do utilizador tem quatro propriedades:

  • usuário name é um objeto de Cadeia de caracteres
  • usuário email é também um objeto de Cadeia de caracteres
  • usuário age é um número inteiro, ou seja, a idade é armazenado em anos (por exemplo, 26 e não exatamente de aniversário!)
  • finalmente uma bandeira booleanaisDeveloper

nossa aplicação Android ou Java precisa converter um objeto UserSimple para sua representação JSON. Assumindo que mantemos os nomes dos membros da mesma forma, esperaríamos um tal JSON para Norman, o autor deste post no blog:

{ "name": "Norman", "email": "[email protected]", "age": 26, "isDeveloper": true}

então vamos ver como podemos fazer a conversão com o Gson. Primeiro de tudo, precisamos criar um objeto Java para Norman:

UserSimple userObject = new UserSimple( "Norman", "[email protected]", 26, true);

para fazer a serialização, precisamos de um Gson objeto, que trata da conversão. Podemos simplesmente usar o construtor:

Gson gson = new Gson(); 

em seguida, precisamos chamar a função toJson() e passar o UserSimple objeto:

String userJson = gson.toJson(userObject); 

O userJson objeto contém o seguinte valor:

{ "age": 26, "email": "[email protected]", "isDeveloper": true, "name": "Norman"}

Gson alterado a ordem das propriedades (para por ordem alfabética), mas o conteúdo é idêntico! Repare como a Gson respeitava os tipos. Os valores das cadeias foram embrulhados em "", enquanto os valores inteiros não tinham nenhum Invólucro. Não tivemos que mexer com objetos JSON ou copiar membros individuais. Uma única chamada para o Gson foi suficiente para mapear todo o objecto. Isto é muito útil quando trabalhamos com estruturas de dados complexas. Mas antes de ir muito fundo, vamos testar a outra direcção. O Gson pode criar um objeto Java a partir do JSON acima?

fundamentos da Deserialização JSON-Java

em primeiro lugar, precisamos criar uma String, que contém o JSON acima mencionado:

String userJson = "{'age':26,'email':'[email protected]','isDeveloper':true,'name':'Norman'}"; 

mudamos o " para ' para evitar que toneladas de \" escapassem. No entanto, funciona de qualquer maneira. O próximo passo é, como você provavelmente já adivinhou, para criar uma instância Gson:

Gson gson = new Gson(); 

Finalmente, temos a mapa a partir de um JSON para um objeto Java com fromJson():

UserSimple userObject = gson.fromJson(userJson, UserSimple.class); 

Nota o quanto nós temos de passar o esperado objeto Java como o segundo parâmetro. Caso contrário, o Gson não sabe para onde deve mapear o JSON. Não é um mágico!Se juntarmos um depurador e verificarmos o resultado, veremos que o Gson mapeou todas as propriedades correctamente.:

 objecto do utilizador

nesta publicação inicial, viu o uso básico do Gson. Nós mostramos como é fácil mapear de e para JSON data. Temos a certeza que tem um monte de perguntas neste momento.:

  • As classes de modelos Java precisam de um construtor/getter/setter?
  • os campos do modelo Java podem ser privados?
  • como são tratados os valores nulos?
  • e se a classe Java tem nomes de membros diferentes do JSON?
  • How to (de)serialize arrays/lists of objects
  • How to (de)serialize objectos aninhados
  • Does Gson keep a defined default value for a class property while executing .fromJson() and there isn’t any value for that property available in JSON?Não te preocupes, vamos chegar a todos nas próximas semanas. Se você tem um tópico específico em mente, deixe-nos saber nos comentários ou no twitter @futurestud_io.

    Make it rock & enjoy coding!

    ainda não é especialista? Traz O Nosso Livro Gson!

    Gson Book

    mapear JSON para objetos Java (e vice-versa) é a partir dos anos 90. Gson é a solução moderna para mapear entre Java e JSON automaticamente com esforço mínimo. Só precisa de saber como! Aprenda todos os detalhes sobre as capacidades do Gson, configuração & personalização em nosso livro. O nosso livro contém tudo o que precisa de saber sobre o Gson. Valorize o seu tempo e salve-se de intermináveis horas de pesquisas do Google para corrigir rapidamente seus problemas. Invista em seu conhecimento de frente e em uma solução limpa. Vamos fazer de TI o perito em Gson da tua equipa.

    inclui um livro de trabalho!

Deixe uma resposta

O seu endereço de email não será publicado.

More: