Salvar dados em um arquivo JSON com Gson

Salvar dados em um arquivo JSON com Gson

1. Visão geral

Gson é uma biblioteca Java que nos permite converter objetos Java em uma representação JSON. Também podemos usá-lo ao contrário, para converter uma string JSON em um objeto Java equivalente.

Neste tutorial rápido, descobriremos como salvar vários tipos de dados Java como JSON em um arquivo.

2. Dependências do Maven

Primeiramente, precisamos adicionar a dependência Gson empom.xml. Disponível emMaven Central:


    com.google.code.gson
    gson
    2.8.5

3. Salvando dados em um arquivo JSON

Usaremos o métodotoJson(Object src, Appendable writer) da classeGson para converter um tipo de dados Java em JSON e armazená-lo em um arquivo. O construtorGson() cria um objetoGson com configuração padrão:

Gson gson = new Gson();

Agora, podemos chamartoJson () para converter e armazenar objetos Java.

Vamos explorar alguns exemplos com diferentes tipos de dados em Java.

3.1. Primitivas

Salvar primitivas em um arquivo JSON é bastante direto usando o GSON:

gson.toJson(123.45, new FileWriter(filePath));

Aqui,filePath denota a localização do arquivo. A saída do arquivo simplesmente conterá o valor primitivo:

123.45

3.2. Objetos personalizados

Da mesma forma, podemos armazenar objetos como JSON.

Primeiro, vamos criar uma classeUser simples:

public class User {
    private int id;
    private String name;
    private transient String nationality;

    public User(int id, String name, String nationality) {
        this.id = id;
        this.name = name;
        this.nationality = nationality;
    }

    public User(int id, String name) {
        this(id, name, null);
    }
}

Agora, vamos armazenar um objetoUser como um JSON:

User user = new User(1, "Tom Smith", "American");
gson.toJson(user, new FileWriter(filePath));

A saída do arquivo será:

{"id":1,"name":"Tom"}

Se um campo estiver marcado comotransient, ele será ignorado por padrão e não será incluído na serialização ou desserialização JSON. Como resultado, o camponationality não está presente na saída JSON.

Também por padrão, o Gson omite campos nulos durante a serialização. Portanto, se considerarmos este exemplo:

gson.toJson(new User(1, null, "Unknown"), new FileWriter(filePath));

a saída do arquivo será:

{"id":1}

Veremos como incluir campos nulos na serialização mais tarde.

3.3. Colecções

Podemos armazenar uma coleção de objetos de maneira semelhante:

User[] users = new User[] { new User(1, "Mike"), new User(2, "Tom") };
gson.toJson(users, new FileWriter(filePath));

Nesse caso, a saída do arquivo será uma matriz de objetosUser:

[{"id":1,"name":"Mike"},{"id":2,"name":"Tom"}]

4. UsandoGsonBuilder

Para ajustar as configurações padrão do Gson, podemos utilizar a classeGsonBuilder.

Esta classe segue o padrão do construtor e é normalmente usada chamando primeiro vários métodos de configuração para definir as opções desejadas e, finalmente, chamando o métodocreate():

Gson gson = new GsonBuilder()
  .setPrettyPrinting()
  .create();

Aqui, estamos configurando a opção de impressão bonita que é definida por padrão comofalse Da mesma forma, para incluir valores nulos na serialização, podemos chamarserializeNulls(). As opções disponíveis são listadashere.

5. Conclusão

Neste artigo rápido, entendemos como serializar vários tipos de dados Java em um arquivo JSON. Para explorar vários artigos sobre JSON, dê uma olhada emour other tutorials neste tópico.

Como sempre, os trechos de código estão disponíveis emthis GitHub repository.