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);
}
}
}