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

Desafio Java: trabalhando com lambdas, streams e Spring Framework - Exercícios 3 a 5

Segue minha resolução:

  • Criação da classe Tarefa com implementação do @JsonCreator e JsonProperties:
package br.com.alura.exercicios.contador;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Tarefa {

    private String descricao;
    private boolean concluida;
    private String pessoaResponsavel;

    @JsonCreator
    public Tarefa( @JsonProperty("pessoaResponsavel") String pessoaResponsavel, @JsonProperty("concluida") boolean concluida, @JsonProperty("descricao") String descricao) {
        this.pessoaResponsavel = pessoaResponsavel;
        this.concluida = concluida;
        this.descricao = descricao;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public boolean isConcluida() {
        return concluida;
    }

    public void setConcluida(boolean concluida) {
        this.concluida = concluida;
    }

    public String getPessoaResponsavel() {
        return pessoaResponsavel;
    }

    public void setPessoaResponsavel(String pessoaResponsavel) {
        this.pessoaResponsavel = pessoaResponsavel;
    }

    @Override
    public String toString() {
        return "Tarefa{" +
                "descricao:'" + descricao + '\'' +
                ", concluida:" + concluida +
                ", pessoaResponsavel:'" + pessoaResponsavel + '\'' +
                '}';
    }
}
  • Rodando a aplicação:
package br.com.alura.exercicios.contador;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.io.File;


import java.util.Scanner;

@SpringBootApplication
public class ContadorApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(ContadorApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
    Tarefa tarefa = new Tarefa("Victor", false, "Estudar Java");
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(new File("Tarefa.json"), tarefa);
        System.out.println("Arquivo gerado com sucesso");
        File file = new File("Tarefa.json");
        Tarefa tarefa1 = mapper.readValue(file, Tarefa.class);

        System.out.println(tarefa1);



        }

    }
}
1 resposta
solução!

Oi, Victor! Como vai?

Sua implementação da classe Tarefa com @JsonCreator e @JsonProperty ficou bem organizada, garantindo uma boa desserialização do JSON. Também foi interessante ver o uso do ObjectMapper para escrita e leitura do arquivo, mostrando domínio do fluxo completo.

Uma dica interessante para o futuro é utilizar try-with-resources ao lidar com arquivos, o que ajuda no gerenciamento automático de recursos. Veja este exemplo:


try {
    ObjectMapper mapper = new ObjectMapper();
    Tarefa tarefa = new Tarefa("Victor", false, "Estudar Java");
    mapper.writeValue(new File("Tarefa.json"), tarefa);
} catch (Exception e) {
    System.out.println(e.getMessage());
}

Esse código garante que exceções sejam tratadas corretamente e evita problemas com recursos abertos.

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