Gravação de Arquivo JSON dentro do proprio projeto

Esse projeto mostra como criar e gravar um arquivo do tipo JSON dentro do proprio projeto.

Configurar o projeto

Estrutura do Projeto depois de finalizado

Vamos criar a classe pessoa.java

Pessoa.java
package entity;

import java.io.Serializable;

public class Pessoa implements Serializable {

	//Implementamos o Serializable para podermos trabalhar com objeto
	
	private static final long serialVersionUID = 1L;
	
	private Integer id;
	private String nome;
	private String email;
	private Integer idade;
	private String sexo;

	public Pessoa() {
	}

	public Pessoa(Integer id, String nome, String email, Integer idade, String sexo) {
		this.id = id;
		this.nome = nome;
		this.email = email;
		this.idade = idade;
		this.sexo = sexo;
	}

	@Override
	public String toString() {
		return "Pessoa [id=" + id + ", nome=" + nome + ", email=" + email + ", idade=" + idade + ", sexo=" + sexo + "]";
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

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

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Integer getIdade() {
		return idade;
	}

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

	public String getSexo() {
		return sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

}
					

Criar a Interface para os métodos de aberto/criação, gravação e fechamento do arquivo.

IJSONWrite.java
package json;

import java.util.ArrayList;
import entity.Pessoa;

public interface IJSONWrite {

	public void openJson() throws Exception;

	public void gravarJson(ArrayList pessoas) throws Exception;

	public void closeJson() throws Exception;

}
					

Criar a classe que herdará a Interface de gravação do arquivo Json

JSONWrite.java
package json;

import java.io.File;
import java.io.FileWriter;
import java.net.URL;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import entity.Pessoa;

public class JSONWrite implements IJSONWrite {

	FileWriter fw;

	@Override
	public void openJson() throws Exception {

	}

	@Override
	public void gravarJson(ArrayList pessoas) throws Exception {
		//Transformará a lista de pessoas para o formato Json
		fw.write(new Gson().toJson(pessoas));
	}

	@Override
	public void closeJson() throws Exception {
		//atualiza o arquivo
		fw.flush();
		//fecha o arquivo
		fw.close();
	}

	public void gravarJSONProjeto(List pessoas) throws Exception {
		URL location = JSONWrite.class.getProtectionDomain().getCodeSource().getLocation();
		//imprime no console o locar onde o arquivo será gravado
		System.out.println(location.getFile());
		//passando o caminho onde iremos gravar o arquivo
		Path path = FileSystems.getDefault().getPath("./src/json").toAbsolutePath();
		//definindo o nome do arquivo a ser gerado
		File f = new File(path.toFile(), "pessoa.json");
		//classe de gravação de arquivo
		FileWriter fw = new FileWriter(f, false);
		fw.write(new Gson().toJson(pessoas));
		fw.flush();
		fw.close();
	}

	public static void main(String[] args) {

		try {
			//espaço de memoria para trabalhar com a classe
			JSONWrite json = new JSONWrite();
			//espaço para utilizar a lista
			ArrayList lista = new ArrayList();
			//adiciona pessoas na lista
			lista.add(new Pessoa(10, "chiquinha", "chiquinha@chaves.com", 9, "f"));
			lista.add(new Pessoa(11, "chaves", "chaves@chaves.com", 11, "m"));
			lista.add(new Pessoa(12, "madruga", "madruga@chaves.com", 50, "m"));
			lista.add(new Pessoa(13, "florinda", "florinda@chaves.com", 39, "f"));
			//comando p execitar a gravação
			json.gravarJSONProjeto(lista);
			System.out.println("Dados Gravados em JSON");
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

}
						

Executar a classe para rodar o main e gerar o arquivo Json

IJSONWrite.java