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.

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