1
resposta

[Projeto] Desafio final

Desafio API ViaCep

Main:

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) throws IOException, InterruptedException {
        var scanner = new Scanner(System.in);
        var consultaApi = new ConsultaApi();
        var  gerarJson = new GerarJson();
        List<Local> list = new ArrayList<>();
        String pesquisa = "";

        while (!pesquisa.equalsIgnoreCase("sair")){
            System.out.println("Digite o CEP que quer adicionar: ");
            pesquisa = scanner.nextLine();

            if(pesquisa.equalsIgnoreCase("sair")){
                break;
            }
            pesquisa = pesquisa.replaceAll("\\D", "");

            if(pesquisa.length() != 8){
                System.out.println("CEP invalido");
            }else{
                list.add(consultaApi.consultaApi(pesquisa));
                System.out.println("Cidade adicionada: " + consultaApi.consultaApi(pesquisa).getCidade());
            }
        }
        gerarJson.gerarJson(list);
    }
}

Local:

import com.google.gson.annotations.SerializedName;

public class Local {
    private String cep;
    private String logradouro;
    private String bairro;
    @SerializedName("localidade")
    private String cidade;
    private String uf;
    private String estado;
    private String regiao;

    public String getCidade() {
        return cidade;
    }
}

ConsultaApi:

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 ConsultaApi {
    Gson gson = new Gson();

    public Local consultaApi(String pesquisa) throws IOException, InterruptedException {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://viacep.com.br/ws/" + pesquisa + "/json/"))
                .GET()
                .build();
        HttpResponse<String> response = client
                .send(request, HttpResponse.BodyHandlers.ofString());
        String json = response.body();
        return gson.fromJson(json, Local.class);
    }
}

GerarJson:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class GerarJson {
    Gson gson = new GsonBuilder()
            .setPrettyPrinting()
            .create();

    public void gerarJson(List list) throws IOException {
        var writer = new FileWriter("Locais.json");
        writer.write(gson.toJson(list));
        writer.close();
    }
}

Terceira semana estudando e primeiro desafio postado aqui no forum.

1 resposta

Oi, Pedro! Como vai?

Gostei da forma como você organizou as responsabilidades em classes separadas, como ConsultaApi, Local e GerarJson, o que mostra cuidado com legibilidade e manutenção do projeto. Também chama atenção o uso do Scanner com validação do CEP, deixando o fluxo mais claro para quem utiliza a aplicação.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!