Como ler um arquivo JSON no Java

1 minutos de leitura

Atualizado em:

Forma muito simples de se ler um arquivo JSON no Java e transformar em um objeto, muito útil para criar arquivos de configuração para seu sistema.

Dependências

A única dependência será o Gson, para a conversão do JSON para objetos Java.

Código

Vamos criar um arquivo chamado config.json na raiz do nosso projeto, ele irá conter o JSON que será lido.

{
    "nome": "paulo",
    "idade": 31,
    "lista": ["Item 1", "Item 2", "Item 3"],
    "cidade":{
        "nome":"Rio de janeiro",
        "estado": "RJ"
    }
}

Vamos criar um arquivo Cidade.java para encapsular esse objeto. Servirá para demonstrar a capacidade de trabalharmos com objetos dentro do arquivo JSON.

public class Cidade {

    private String nome;
    private String estado;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }
}

E vamos criar também um arquivo Config.java, para receber o conteúdo principal do arquivo.

public class Config {

    private String nome;
    private int idade;
    private List<String> lista;
    private Cidade cidade;

    public Config() {
        cidade = new Cidade();
        lista = new ArrayList<>();
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public List<String> getLista() {
        return lista;
    }

    public void setLista(List<String> lista) {
        this.lista = lista;
    }

    public Cidade getCidade() {
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }

}

Por fim, em nossa classe main, vamos realizar a leitura do arquivo e guardar em uma String o seu conteúdo:

 String json
                = String.join(" ",
                        Files.readAllLines(
                                Paths.get("./config.json"),
                                StandardCharsets.UTF_8)
                );

Logo em seguida, desserializamos o conteúdo em um novo objeto Config, usando o método fromJson do Gson:

Config config = new Gson().fromJson(json, Config.class);

A classe completa ficará assim:

public class Main {

    public static void main(String[] args) throws IOException {

        String json
                = String.join(" ",
                        Files.readAllLines(
                                Paths.get("./config.json"),
                                StandardCharsets.UTF_8)
                );

        Config config = new Gson().fromJson(json, Config.class);

        System.out.println(config.getNome());
        System.out.println(config.getIdade());
        System.out.println(config.getLista());
        System.out.println("");
        System.out.println(config.getCidade().getNome());
        System.out.println(config.getCidade().getEstado());

    }
}

Saída da execução dessa aplicação:

paulo
31
[Item 1, Item 2, Item 3]

Rio de janeiro
RJ

[]'s

Deixe um comentário