Abaixo meu projeto para buscador de CEP, utilizei as aulas e dicas para montar o meu, com algumas alterações e um loop para adicionar mais de um endereço no arquivo .JSON, além disso, possui uma verificação para caso o usuário não insira nenhum objeto.
Record Endereco
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
public record Endereco(
String cep,
String logradouro,
String complemento,
String bairro,
String localidade,
String uf
) {}
APIConsumer
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class APIConsumer {
public Endereco getEnderecoByCep(String cep) throws IOException, InterruptedException {
String url = "https://viacep.com.br/ws/" + cep + "/json/";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return gson.fromJson(json, Endereco.class);
}
}
JsonWriter com a criação de uma array para armazenar os inputs e método para verificar se array está vazio
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JsonWriter {
private List<Endereco> enderecos = new ArrayList<>();
public void addEndereco(Endereco endereco) {
enderecos.add(endereco);
}
public boolean isEmpty() {
return enderecos.isEmpty();
}
public void writeFile(String filePath) throws IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter writer = new FileWriter(filePath);
writer.write(gson.toJson(enderecos));
writer.close();
}
}
Main
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
import java.io.IOException;
import java.util.Scanner;
public class MainAPI {
public static void main(String[] args) {
Scanner leitura = new Scanner(System.in);
APIConsumer api = new APIConsumer();
JsonWriter jsonWriter = new JsonWriter();
while (true) {
System.out.println("Digite o CEP (ou 'sair' para encerrar):");
String cep = leitura.nextLine();
if (cep.equalsIgnoreCase("sair")) {
break;
}
if (cep.isEmpty()) {
System.out.println("Nenhum CEP digitado. Tente novamente.");
continue;
}
try {
Endereco endereco = api.getEnderecoByCep(cep);
jsonWriter.addEndereco(endereco);
System.out.println("Endereço adicionado com sucesso!");
} catch (IOException | InterruptedException e) {
System.out.println("Erro ao buscar o endereço: " + e.getMessage());
}
}
if (jsonWriter.isEmpty()) {
System.out.println("Nenhum endereço foi adicionado.");
System.out.println("Programa encerrado.");
return;
} else {
try {
System.out.println("Escrevendo arquivo...");
jsonWriter.writeFile("src/CursoAPI/Exercicios/Aula4/ProjetoAPI/endereco.json");
} catch (IOException e) {
System.out.println("Erro ao escrever o arquivo: " + e.getMessage());
}
}
leitura.close();
System.out.println("Programa encerrado.");
}
}