Boa noite, eu fiz o último desafio do curso. Tentei fazer um pouco diferente do que a professora desenvolveu. O endereço esta sendo apresentado corretamente em tela, porém não esta gerando o arquivo corretamente. Até gera, mas só retorna null.
import java.io.IOException;
public static void main(String[] args) {
Endereco endereco = new Endereco();
try {
EstruturaMenu.menu();
GeradorArquivo.geraArquivo(endereco);
} catch (RuntimeException | IOException error) {
System.out.println(error.getMessage());
System.out.println("Finalizando a aplicação.");
}
}
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
public class GeradorArquivo {
public static void geraArquivo(Endereco endereco) throws IOException {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
FileWriter escrita = new FileWriter("endereco.json");
escrita.write(gson.toJson(endereco.cep));
escrita.close();
}
}
public class Endereco {
String cep;
String logradouro;
String complemento;
String bairro;
String localidade;
String uf;
@Override
public String toString() {
return "cep: " + cep +
", logradouro: " + logradouro+
", complemento: " + complemento +
", bairro: " + bairro +
", localidade: " + localidade +
", uf: " + uf;
}
}
import com.google.gson.Gson;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class BuscaCep {
public Endereco buscaEndereco(String cep){
URI api = URI.create("https://viacep.com.br/ws/" + cep + "/json/" );
HttpRequest request = HttpRequest.newBuilder()
.uri(api)
.build();
try {
HttpResponse<String> response = HttpClient
.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
return new Gson().fromJson(response.body(), Endereco.class);
} catch (Exception error) {
throw new RuntimeException("Não foi possível obter o endereço.");
}
}
}
import java.util.Scanner;
public class EstruturaMenu {
public static void menu(){
BuscaCep buscaCep = new BuscaCep();
Scanner leitura = new Scanner(System.in);
System.out.println("Digite o CEP: ");
var cep = leitura.nextLine();
Endereco endereco = buscaCep.buscaEndereco(cep);
System.out.println(endereco);
}
}