Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Projeto Concluído:

//Classe Principal

import cepConexao.RequisicaoCep;
import modelos.EnderecoOBJ;
import modelos.GeradorJson;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        RequisicaoCep requisicaoCep = new RequisicaoCep();
        Scanner leitura = new Scanner(System.in);
        String cep = "";
        List<EnderecoOBJ> enderecoOBJList = new ArrayList<>();
        GeradorJson geradorJson = new GeradorJson();
        while (!cep.equalsIgnoreCase("sair")){
            System.out.println("Digite CEP para ser pesquisado(se desejar parar o programa digite sair): ");
            cep = leitura.nextLine();
            if (cep.equalsIgnoreCase("sair")){
                System.out.println("Finalizando Programa.");
                geradorJson.gerarJson(enderecoOBJList);
                break;
            }
            try {
                EnderecoOBJ enderecoOBJ = new EnderecoOBJ(requisicaoCep.buscaCEP(cep));
                enderecoOBJList.add(enderecoOBJ);
                System.out.println(enderecoOBJ+"\n");

            } catch (IOException|InterruptedException e) {
                System.out.println("Não foi possivel realizar a Conexão.");
                throw new RuntimeException(e);
            }
        }
    }
}

//Conexão e Tratamento de Exceção:

package cepConexao;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonSyntaxException;
import modelos.EnderecoReco;

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 RequisicaoCep {
    public EnderecoReco buscaCEP(String cep) throws IOException, InterruptedException {
        Gson gson = new GsonBuilder().setPrettyPrinting().
                create();
        EnderecoReco endereco = null;
        URI enderecoApi = URI.create("https://viacep.com.br/ws/"+cep+"/json/");

        HttpRequest request = HttpRequest.newBuilder()
                .uri(enderecoApi)
                .build();

        HttpResponse<String> response = HttpClient.newHttpClient().
                send(request, HttpResponse.BodyHandlers.ofString());

        String json = response.body();
        try {
            endereco = gson.fromJson(json, EnderecoReco.class);
        }catch (JsonSyntaxException e){
            throw new CepErradoExcecao("Não localizei o CEP, finalizando o Programa.");
        }
        return endereco;
    }
}


package cepConexao;

public class CepErradoExcecao extends RuntimeException {
    public CepErradoExcecao(String mensagem) {
        super(mensagem);
    }
}

//Endereço Objeto e Record

package modelos;

public class EnderecoOBJ {
    private String cep;
    private String logradouro;
    private String bairro;
    private String localidade;
    private String uf;
    private String complemento;

    public  EnderecoOBJ (EnderecoReco enderecoReco){
        this.cep = enderecoReco.cep();
        this.logradouro = enderecoReco.logradouro();
        this.bairro = enderecoReco.bairro();
        this.localidade = enderecoReco.localidade();
        this.uf = enderecoReco.uf();
        this.complemento = enderecoReco.complemento();
    }

    @Override
    public String toString() {
        return "Endereço: " + "cep= " + cep + ", logradouro= " + logradouro + ", bairro= " + bairro + ", localidade= " + localidade +  ", uf= " + uf+
                ", complemento= " + complemento ;
    }
}

package modelos;

public record EnderecoReco(String cep, String logradouro, String bairro, String localidade, String uf
, String complemento) {
}

//Gerador Json

package modelos;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class GeradorJson {
    public void gerarJson(List<EnderecoOBJ> enderecoOBJ) {
        Gson gson = new GsonBuilder().setPrettyPrinting().
                create();
        try {
            FileWriter escrita = new FileWriter("CEPS.json");
            escrita.write(gson.toJson(enderecoOBJ));
            escrita.close();
            System.out.println("Json gerado com sucesso");
        } catch (IOException e) {
            System.out.println("Não Foi possivel gerar o Json!");
            throw new RuntimeException(e);
        }
    }
}
1 resposta
solução!

Oi, Vinicius, tudo bem?

Parabéns pelo resultado e obrigado por compartilhar no fórum e contribuir com a comunidade!

Continue mergulhando em tecnologia e se tiver dúvidas, conte com o fórum.

Abraços e bons estudos!