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

[Projeto] Projeto feito e duvida

Bom, fiz de uma forma diferente, invez de colocar para criar cada arquivo.json diferente para cada CEP eu criei um Json para guardar todos os CEPs digitados, e fiz um while na class principal para colocar mais de uma vez algum CEP, e não criei a classe do Write como foi dito no curso, queria saber se está bem feito o codigo, se tem algo para melhorar.

Classe Principal:

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

public class Menu {
    public static void main(String[] args) throws IOException, InterruptedException {
        Scanner sc = new Scanner(System.in);
        String buscar = "";
        List<ViaCEP> ceps = new ArrayList<>();
        FileWriter write = new FileWriter("ceps.json");
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        while (!buscar.equalsIgnoreCase("sair")) {
            ViaCEP cep = new ViaCEP();
            System.out.println("Digite qualquer coisa para continuar ou SAIR para sair ");
            if(sc.nextLine().equalsIgnoreCase("sair")) {
                 break;
            }
            System.out.println("Digite seu CEP ");
            cep.setCep(sc.nextLine());


            try {
                Endereco novoEndereco = cep.buscaEndereco(cep.getCep());
                System.out.println(novoEndereco);;
                write.write(gson.toJson(novoEndereco));


            } catch (JsonSyntaxException e) {
            System.out.println("Erro " + e.getMessage());
            }
        }
        write.close();
    }
}

Classe ViaCEP

package br.com.alura.cep.api;

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 ViaCEP {
private String cep;





public Endereco buscaEndereco(String cep) {
            URI endereco = URI.create ("https://viacep.com.br/ws/" + getCep() + "/json");

            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(endereco)
                    .build();

            HttpResponse<String> response = null;
            try {
                response = HttpClient
                        .newHttpClient()
                        .send(request, HttpResponse.BodyHandlers.ofString());
            } catch (IOException e) {
                throw new RuntimeException(e);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }

            return new Gson().fromJson(response.body(), Endereco.class);
        }




    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }
}
1 resposta
solução!

Oi, Andrew, tudo bem?

Parabéns pelo resultado, ficou ótimo! Também agradeço por compartilhar seu projeto, com certeza vai ajudar nos estudos de todas as pessoas que estão aprendendo este mesmo assunto.

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

Abraços e bons estudos!