1
resposta

Desafio 2

  1. 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.

Bem... eu tirei alguns atributo do String Json, mas não deu nenhum erro.

package br.com.alura.screenmatch.desafios.desafio02;

import com.google.gson.Gson;

public class TransformarJsonEmObjeto {
    public static void main(String[] args) {
        String json = "{\"idade\":\"24\",\"cidade\":\"blumenau\",\"noiva\":\"brunna\"}";

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

        System.out.println(pessoa);

    }
}

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Caio. Tudo bem?

A biblioteca Gson é bastante flexível e, por padrão, não lança erros quando campos estão ausentes no JSON ou quando há campos adicionais que não estão mapeados na classe de destino. Isso explica por que seu código não deu erro ao remover alguns atributos.

Para garantir que o JSON possa ser convertido mesmo com campos ausentes ou adicionais, você não precisa fazer nada extra, pois o Gson já lida com isso automaticamente. No entanto, se você quiser garantir que todos os campos obrigatórios estejam presentes, pode adicionar validações adicionais no seu código.

Veja esse exemplo de como sua classe Pessoa poderia ser definida usando o conceito de Record em Java:

public record Pessoa(String nome, int idade, String cidade) {}

E seu código principal está correto. Quando você executa, o Gson simplesmente ignora os campos ausentes e preenche os campos não encontrados com null ou valores padrão.

Se você quiser explorar mais, pode consultar a documentação do Gson para ver como personalizar a deserialização, mas para o que você está fazendo, o comportamento padrão já atende bem.

Espero ter ajudado e bons estudos!