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:

Instalar Biblioteca

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.