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)