1
resposta

[Projeto] .

import java.io.*;
import java.net.*;
import java.util.Scanner;
import org.json.JSONObject;

public class ViaCEPSimples {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Digite o CEP (apenas números): ");
        String cep = sc.nextLine();
        
        // Consulta o CEP
        String json = consultaCEP(cep);
        JSONObject dados = new JSONObject(json);
        
        // Exibe os dados
        System.out.println("\nDados do CEP " + cep + ":");
        System.out.println("Logradouro: " + dados.getString("logradouro"));
        System.out.println("Bairro: " + dados.getString("bairro"));
        System.out.println("Cidade: " + dados.getString("localidade"));
        System.out.println("UF: " + dados.getString("uf"));
        
        // Salva em arquivo
        System.out.print("\nDigite o nome do arquivo para salvar (sem extensão): ");
        String nomeArq = sc.nextLine();
        
        salvaJSON(dados, nomeArq + ".json");
        System.out.println("Dados salvos em " + nomeArq + ".json");
    }
    
    public static String consultaCEP(String cep) throws IOException {
        URL url = new URL("https://viacep.com.br/ws/" + cep + "/json/");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestMethod("GET");
        
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuilder content = new StringBuilder();
        
        while ((inputLine = in.readLine()) != null) {
            content.append(inputLine);
        }
        in.close();
        con.disconnect();
        
        return content.toString();
    }
    
    public static void salvaJSON(JSONObject dados, String nomeArq) throws IOException {
        FileWriter file = new FileWriter(nomeArq);
        file.write(dados.toString(2));  // Indentação de 2 espaços
        file.close();
    }
}
1 resposta

Olá, Eleazar! Tudo bem?

Parabéns! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Percebi que você dominou o uso de requisições HTTP com HttpURLConnection, aplicou muito bem a manipulação de JSON com JSONObject e ainda demonstrou compreender a relevância de trabalhar com arquivos usando FileWriter para salvar os dados.

Uma sugestão interessante para evoluir ainda mais é usar BufferedWriter para melhorar o desempenho ao salvar arquivos. Veja só:

public static void salvaJSON(JSONObject dados, String nomeArq) throws IOException {
    try (BufferedWriter writer = new BufferedWriter(new FileWriter(nomeArq))) {
        writer.write(dados.toString(2));  // Indentação de 2 espaços
    }
}

Essa abordagem ajuda a evitar problemas de performance ao escrever grandes quantidades de dados.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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