Olá, Arthur! Tudo bem?
Que bom que você está explorando diferentes abordagens para resolver o exercício!
Quando você utiliza new GsonBuilder().setLenient().create();, está configurando o Gson para ser mais flexível na interpretação do JSON. Essa configuração pode ser útil em situações onde o JSON não está perfeitamente formatado, permitindo, por exemplo, aceitar vírgulas extras ou valores de strings não escapados.
Por outro lado, ao usar apenas new Gson();, você está utilizando a configuração padrão do Gson, que é mais restritiva. Em muitos casos, isso é suficiente, especialmente se o JSON que você está processando está bem formatado.
A diferença que você observou, onde a idade recebe 0, pode estar relacionada a como o Gson lida com campos ausentes. Quando um campo esperado não está presente no JSON, o Gson atribui valores padrão aos campos primitivos, como 0 para inteiros.
Em termos de boas práticas, usar GsonBuilder com configurações específicas pode ser uma maneira de tornar seu código mais robusto, especialmente se você estiver lidando com JSONs de fontes variadas e potencialmente inconsistentes. No entanto, se você tem controle sobre o formato do JSON e ele está sempre bem formatado, new Gson(); pode ser suficiente.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.