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
Top comments (0)