1
resposta

Desafio: hora da prática - Converter JSON

Crie uma classe Pessoa usando o conceito de Record em Java, com atributos como nome, idade e cidade. Em seguida, implemente um programa que utiliza a biblioteca Gson para converter um JSON representando uma pessoa em um objeto do tipo Pessoa.

package br.com.exercicio.modelo;

public record Pessoa(String nome, int idade, String cidade) {
}
package br.com.exercicio.principal;

import br.com.exercicio.modelo.Pessoa;
import com.google.gson.Gson;

public class Principal {
    public static void main(String[] args) {

        String json = "{\"nome\":\"Fulana\",\"idade\":24,\"cidade\":\"São Paulo\"}";
        System.out.println(json);

        Gson gson = new Gson();
        Pessoa pessoa = gson.fromJson(json, Pessoa.class);

        System.out.println("Pessoa: " + pessoa);

        }
}

Modifique o programa do Exercício anterior para permitir a conversão de um JSON mesmo se alguns campos estiverem ausentes ou se houver campos adicionais não representados no objeto Pessoa. Consulte a documentação da biblioteca Gson para flexibilizar a conversão.

package br.com.exercicio.principal;

import br.com.exercicio.modelo.Pessoa;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Principal {
    public static void main(String[] args) {

        String json = "{\"nome\":\"Fulana\",\"cidade\":\"São Paulo\"}";
        System.out.println(json);

        Gson gson = new GsonBuilder().setLenient().create();
        Pessoa pessoa = gson.fromJson(json, Pessoa.class);

        System.out.println("Pessoa: " + pessoa);

        }
}

Crie uma classe Livro que contenha atributos como título, autor e um objeto representando a editora. Em seguida, implemente um programa que utiliza a biblioteca Gson para converter um JSON aninhado representando um livro em um objeto do tipo Livro.

package br.com.exercicio.modelo;

public record Livro(String titulo, String autor, Editora editora) {
}
package br.com.exercicio.modelo;

public record Editora(String nome, String cidade) {
}
package br.com.exercicio.principal;

import br.com.exercicio.modelo.Livro;
import com.google.gson.Gson;

public class Principal {
    public static void main(String[] args) {

        String jsonLivro = "{\"titulo\":\"O Morro dos Ventos Uivantes\",\"autor\":\"Emily Brontë\",\"editora\":{\"nome\":\"Ciranda Cultural\",\"cidade\":\"São Paulo\"}}";

        Gson gson = new Gson();
        Livro livro = gson.fromJson(jsonLivro, Livro.class);

        System.out.println("Livro: " + livro);

    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Oi Aline, tudo bem? 😊

Parabéns pela sua dedicação e pelas soluções apresentadas! 👏

Você demonstrou um excelente entendimento dos conceitos.

A utilização de Record para Pessoa e Livro é perfeita para representar dados imutáveis de forma concisa.

Sua primeira conversão de JSON para Pessoa com Gson está correta e direta.

Para lidar com campos ausentes ou adicionais, o uso de GsonBuilder().setLenient().create() foi a escolha certa. 🤔
Isso torna o parser mais flexível, evitando erros em JSONs que não correspondem exatamente ao seu modelo.

A solução para o JSON aninhado com Livro e Editora também está impecável.
O Gson é muito eficiente em mapear estruturas complexas automaticamente, desde que os nomes dos campos correspondam.

Continue explorando as funcionalidades do Gson, ele oferece muitas opções para serialização e desserialização. 💪

🎓 Para saber mais: