Olá, pessoal. Nesse artigo iremos aprender como o Java nos permite fazer a leitura e a escrita em um arquivo do tipo JSON. Porém, antes de começarmos de fato a parte prática, precisamos saber: O que é JSON?
JSON (Java Script Object Notation) é um formato de representação de dados, assim como o XML, de fácil entendimento para seres humanos e que máquinas conseguem gerar e interpretar facilmente. Esse tipo de arquivo é utilizado para representar objetos, simples ou complexos. O tipo de arquivo JSON foi criado por Douglas Crockford e uma descrição completa desse formato pode ser encontrada na RFC 4627 (http://tools.ietf.org/html/rfc4627).
Muitas APIs, software e etc, geram arquivos JSON pela simplicidade de interpretação e de criação, então nada mais interessante do que saber como fazer a leitura e a criação de um arquivo do tipo JSON. Primeiramente, será necessária uma API chamada JSON.simple, que pode ser baixada no seguinte web site: http://code.google.com/p/json-simple/. Essa API é bem pequena e provê muitas funcionalidades, sendo compatível com o padrão RFC 4627.
Primeiramente vamos levar em conta o seguinte arquivo JSON:
Listagem 1: Exemplo de código JSON
{"sobrenome":"Romanato","estado":"SP","nome":"Allan","pais":"Brasil"}
Tomando o arquivo JSON mostrado acima, vamos criar nossa classe Java que irá criar esse arquivo.
Antes de tudo, temos que ter a biblioteca JSON.simple instalada no build path, conforme a figura abaixo:
Figura 1: Instalar Biblioteca
Com a biblioteca devidamente instalada, será agora montada a classe que irá criar esse arquivo JSON.
Essa classe irá importar as seguintes classes:
- FileWriter – Classe utilizada para se escrever em arquivos;
- IOException – Classe que lança uma exceção de entradas e saídas;
- JSONObject – Classe que cria objetos JSON (importada da biblioteca JSON.simple).
O código é simples, ele cria um objeto JSON, popula o objeto com as informações e gera uma saída “saida.json”.
Listagem 2: Gerando o arquivo JSON
package br.com;
//Classes necessárias
import java.io.FileWriter;
import java.io.IOException;
import org.json.simple.JSONObject;
public class JSONWrite {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
//Cria um Objeto JSON
JSONObject jsonObject = new JSONObject();
FileWriter writeFile = null;
//Armazena dados em um Objeto JSON
jsonObject.put("nome", "Allan");
jsonObject.put("sobrenome", "Romanato");
jsonObject.put("pais", "Brasil");
jsonObject.put("estado", "SP");
try{
writeFile = new FileWriter("saida.json");
//Escreve no arquivo conteudo do Objeto JSON
writeFile.write(jsonObject.toJSONString());
writeFile.close();
}
catch(IOException e){
e.printStackTrace();
}
//Imprimne na Tela o Objeto JSON para vizualização
System.out.println(jsonObject);
}
}
O arquivo gerado estará armazenado na pasta do projeto, se quiser mudar o local onde o arquivo é armazenado, é só mudar o caminho na declaração writeFile = new FileWriter("saida.json").
Como já prevista, a saída será:
Listagem 3: Conteúdo do arquivo saída.json
{"sobrenome":"Romanato","estado":"SP","nome":"Allan","pais":"Brasil"}
Agora que foi criado o arquivo JSON e populado com informações, como se pode fazer para ler?
A resposta é bem simples: temos que importar a classe JSONParser e criar um objeto desse tipo. Mas por quê? Porque o JSONParse é responsável por trazer o arquivo do tipo JSON e salva-lo corretamente no objeto do tipo JSONObject.
Agora será criada a classe que irá ler o arquivo, essa classe possui as seguintes dependências:
- IOException – Classe que lança uma exceção de entradas e saídas;
- JSONObject – Classe que cria objetos JSON (importada da biblioteca JSON.simple);
- FileReader – Classe responsável por ler arquivos;
- JSONParse – Classe que irá criar um parse JSON;
- FileNotFoundException – Classe que irá lançar uma exception se o arquivo não for encontrado;
- ParseException – Classe que lançará uma exception se o parse falhar.
Como o código de escrita em arquivo, o de leitura é simples, mas contendo algumas informações a mais, pois tem-se que colocar tudo que será lido, e como é conhecida a estrutura desse arquivo criada, fica fácil a execução de sua leitura.
Listagem 4: Lendo o arquivo JSON
package br.com;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JSONRead {
public static void main(String[] args) {
JSONObject jsonObject;
//Cria o parse de tratamento
JSONParser parser = new JSONParser();
//Variaveis que irao armazenar os dados do arquivo JSON
String nome;
String sobrenome;
String estado;
String pais;
try {
//Salva no objeto JSONObject o que o parse tratou do arquivo
jsonObject = (JSONObject) parser.parse(new FileReader(
"saida.json"));
//Salva nas variaveis os dados retirados do arquivo
nome = (String) jsonObject.get("nome");
sobrenome = (String) jsonObject.get("sobrenome");
estado = (String) jsonObject.get("estado");
pais = (String) jsonObject.get("pais");
System.out.printf(
"Nome: %s\nSobrenome: %s\nEstado: %s\nPais: %s\n",
nome, sobrenome, estado, pais);
}
//Trata as exceptions que podem ser lançadas no decorrer do processo
catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
A saída no console será a seguinte:
Listagem 5: Resultado da leitura do arquivo exibido no console
Nome: Allan
Sobrenome: Romanato
Estado: SP
Pais: Brasil
Com isso pode-se perceber que a leitura e escrita em arquivos JSON é simples e de fácil acesso para todos os programadores. Pode-se fazer diversas operações com essas saídas como, por exemplo, criar arquivos JSON a partir de consultas em bancos de dados, e esse JSON pode ser lido por uma rotina DOJO na web para poupar a sobrecarga de acessos ao banco de dados quando um web site é aberto. Existem, além dessas, muitas outras aplicações para arquivos JSON, nesse artigo foi coberto o básico de geração e interpretação. Espero que gostem dessa tecnologia e a utilizem.
Abraço e até a próxima publicação.