Abaixo meu projeto para buscador de CEP, utilizei as aulas e dicas para montar o meu, com algumas alterações e um loop para adicionar mais de um endereço no arquivo .JSON, além disso, possui uma verificação para caso o usuário não insira nenhum objeto.
Record Endereco
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
public record Endereco(
        String cep,
        String logradouro,
        String complemento,
        String bairro,
        String localidade,
        String uf
) {}
APIConsumer
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
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 APIConsumer {
    public Endereco getEnderecoByCep(String cep) throws IOException, InterruptedException {
        String url = "https://viacep.com.br/ws/" + cep + "/json/";
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(url))
                .build();
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        String json = response.body();
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        return gson.fromJson(json, Endereco.class);
    }
}
JsonWriter com a criação de uma array para armazenar os inputs e método para verificar se array está vazio
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JsonWriter {
    private List<Endereco> enderecos = new ArrayList<>();
    public void addEndereco(Endereco endereco) {
        enderecos.add(endereco);
    }
    public boolean isEmpty() {
        return enderecos.isEmpty();
    }
    public void writeFile(String filePath) throws IOException {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        FileWriter writer = new FileWriter(filePath);
        writer.write(gson.toJson(enderecos));
        writer.close();
    }
}
Main
package CursoAPI.Exercicios.Aula4.ProjetoAPI;
import java.io.IOException;
import java.util.Scanner;
public class MainAPI {
    public static void main(String[] args) {
        Scanner leitura = new Scanner(System.in);
        APIConsumer api = new APIConsumer();
        JsonWriter jsonWriter = new JsonWriter();
        while (true) {
            System.out.println("Digite o CEP (ou 'sair' para encerrar):");
            String cep = leitura.nextLine();
            if (cep.equalsIgnoreCase("sair")) {
                break;
            }
            if (cep.isEmpty()) {
                System.out.println("Nenhum CEP digitado. Tente novamente.");
                continue;
            }
            try {
                Endereco endereco = api.getEnderecoByCep(cep);
                jsonWriter.addEndereco(endereco);
                System.out.println("Endereço adicionado com sucesso!");
            } catch (IOException | InterruptedException e) {
                System.out.println("Erro ao buscar o endereço: " + e.getMessage());
            }
        }
        if (jsonWriter.isEmpty()) {
            System.out.println("Nenhum endereço foi adicionado.");
            System.out.println("Programa encerrado.");
            return;
        } else {
            try {
                System.out.println("Escrevendo arquivo...");
                jsonWriter.writeFile("src/CursoAPI/Exercicios/Aula4/ProjetoAPI/endereco.json");
            } catch (IOException e) {
                System.out.println("Erro ao escrever o arquivo: " + e.getMessage());
            }
        }
        leitura.close();
        System.out.println("Programa encerrado.");
    }
}
 
            