2
respostas

Gerando um arquivo json

package br.com.alura.screenmatch.principal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.io.FileWriter;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class PrincipalComBusca {
    public static void main(String[] args {
            Scanner leitura = new Scanner(System.in);
            List<Titulo> filmes = new ArrayList <>();
            String busca = " ";
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            
            System.out.println("Digite os nomes dos filmes (digite 'sair' para encerrar):");
            
     // Cadastro manual de filmes (opcional)
     
     while  (true) {
      System.out.print("Nome do filme: ");
            String filme = leitura.nextLine();
            
            if (filme.equalsIgnoreCase("sair")) {
                break;
            }
            
               // Adiciona um novo Titulo à lista (sem dados da API)
               
              Titulo novoTitulo = new Titulo();
              novoTitulo.setTitle(filme);
              filme.add(novoTitulo) ;
        }
        
        // Modo de busca (API OMDB)
        System.out.println("\n--- Modo busca (API) ---");
        System.out.println("Digite um filme para buscar na API (ou 'sair' para encerrar):");
        while (true) {
        System.out.print("Busca: ");
        busca = leitura.nextLine();
        
        if (busca.equalsIgnoreCase("sair")) {
            break;
        }
        
        String urlBase = "https://www.omdbapi.com/?t=";
        String apiKey = "apikey=sua-chave-aqui"; // Substitua pela sua chave!
        String endereco = urlBase + busca.replace(" ", "+") + apiKey;
        
        try {
        
        // Requisição HTTP
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                          .uri(URI.creat(endereco))
                          .build();
                          
                          HttpResponse<String> response = client.send(
                                   request, Http Response.body();
                                   
                                   // Converte JSON para objeto Titulo
                                   Titulo tituloAPI = gson.fromJson(json, Titulo.class);
                                   
                 // Adiciona à lista de filmes
                filmes.add(tituloAPI);
                System.out.println("Filme adicionado: " + tituloAPI.getTitle());
                
                } catch (Exception e) {
                     System.out.println("Erro: " + e.getMessage());
            }
        }
        // Escreve a lista no arquivo JSON (com formatação)
        try(FileWriter escrita = new FileWhiter("filmes.json")) {
             gson.toJson(filmes, escrita);
             "\nArquivo 'filmes.json' gerado com sucesso!");
        } catch (Exception e) {
            System.out.println("Erro ao escrever o arquivo: " + e.getMessage());
        }
        
        System.out.println("Programa encerrado.");
        leitura.close();
    }
}

                          
        
        
        
          
2 respostas

Oi, Eleazar! Como vai?

Com base no que você explicou, achei muito interessante a combinação entre o cadastro manual e a busca via API. É uma prática importante para entender bem o fluxo de entrada de dados e persistência em arquivos.

Uma dica interessante para o futuro é usar o método Files.write() da classe java.nio.file.Files para gravar arquivos de forma mais simples. Veja este exemplo:


import java.nio.file.Files;
import java.nio.file.Path;

List<String> linhas = List.of("Linha 1", "Linha 2");
Files.write(Path.of("saida.txt"), linhas);

Esse código cria ou sobrescreve um arquivo saida.txt com as linhas informadas.

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

A sim obrigado.