Main.java:
package br.com.alura.desafio2;
import br.com.alura.desafio2.dto.LivroDTO;
import br.com.alura.desafio2.dto.PessoaDTO;
import br.com.alura.desafio2.model.Editora;
import br.com.alura.desafio2.model.Livro;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static void main(String[] args) {
String jsonPessoa = """
{
"nome": "Rômulo",
"idade": 23,
"cidade": "São Paulo"
}
""";
Gson gson = new GsonBuilder()
.setLenient()
.create();
PessoaDTO pessoaDTO = gson.fromJson(jsonPessoa, PessoaDTO.class);
System.out.println(pessoaDTO);
//---------------------------------------------------------------------------------
String jsonLivro = """
{
"titulo": "Pet Sematary",
"autor": "Stephen King",
"editora": {
"nome": "Casa da Palavra",
"cidade": "São Paulo"
}
}
""";
LivroDTO livroDTO = gson.fromJson(jsonLivro, LivroDTO.class);
Livro livro = new Livro(
livroDTO.titulo(),
livroDTO.autor(),
new Editora(livroDTO.editora().nome(), livroDTO.editora().cidade())
);
System.out.println(livro);
}
}
PessoaDTO:
package br.com.alura.desafio2.dto;
public record PessoaDTO(
String nome,
int idade,
String cidade
) {}
Livro:
package br.com.alura.desafio2.model;
public class Livro {
private String nome;
private String autor;
private Editora editora;
public Livro(String nome, String autor, Editora editora) {
this.nome = nome;
this.autor = autor;
this.editora = editora;
}
@Override
public String toString() {
return "Livro: %s | Autor: %s | Editora: %s".formatted(this.nome, this.autor, this.editora);
}
}
Editora:
package br.com.alura.desafio2.model;
public class Editora {
private String nome;
private String cidade;
public Editora(String nome, String cidade) {
this.nome = nome;
this.cidade = cidade;
}
@Override
public String toString() {
return this.nome;
}
}
LivroDTO:
package br.com.alura.desafio2.dto;
public record LivroDTO(
String titulo,
String autor,
EditoraDTO editora
) {}
EditoraDTO:
package br.com.alura.desafio2.dto;
public record EditoraDTO(
String nome,
String cidade
) {}