Necessário baixar o arquivo gson-2.10.1.jar
a partir de um CEP de 8 dígitos, o código retornará demais detalhes sobre o endereço.
principal.java
package br.com.meuprojeto.buscacep;
import java.io.IOException;
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
ConsultarCep consultarCep = new ConsultarCep();
try (Scanner entrada = new Scanner(System.in)) {
System.out.println("Insira o número do CEP para continuar:");
String cep = entrada.nextLine().trim();
// Validação simples do CEP (8 dígitos numéricos)
if (!cep.matches("\\d{8}")) {
System.out.println("CEP inválido. Informe um CEP com 8 dígitos numéricos.");
return;
}
Endereco novoEndereco = consultarCep.buscaEndereco(cep);
System.out.println(novoEndereco);
GeradorDeArquivo gerador = new GeradorDeArquivo();
gerador.geradorJson(novoEndereco);
} catch (RuntimeException | IOException e) {
System.out.println("Erro: " + e.getMessage());
System.out.println("A aplicação foi encerrada.");
}
}
}
Endereco.java
package br.com.meuprojeto.buscacep;
public record Endereco(String cep, String logradouro,
String bairro, String localidade, String uf) {
}
GeradorDeArquivo.java
package br.com.meuprojeto.buscacep;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeradorDeArquivo {
public void geradorJson(Endereco endereco) throws IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String nomeArquivo = endereco.cep() + ".json";
try (FileWriter escrita = new FileWriter(nomeArquivo)) {
escrita.write(gson.toJson(endereco));
}
System.out.println("Arquivo JSON gerado com sucesso: " + nomeArquivo);
}
}
ConsultarCep.java
package br.com.meuprojeto.buscacep;
import com.google.gson.Gson;
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 ConsultarCep {
public Endereco buscaEndereco(String cep) {
URI endereco = URI.create("https://viacep.com.br/ws/" + cep + "/json");
HttpRequest request = HttpRequest.newBuilder()
.uri(endereco)
.build();
try {
HttpResponse<String> response = HttpClient
.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
String json = response.body();
// Verifica se o CEP não foi encontrado
if (json.contains("\"erro\": true")) {
throw new RuntimeException("CEP não encontrado: " + cep);
}
return new Gson().fromJson(json, Endereco.class);
} catch (IOException | InterruptedException e) {
throw new RuntimeException("Erro inesperado ao consultar o CEP: " + cep, e);
}
}
}