1️⃣ Correção no JSON String
No primeiro trecho do código, há um erro na definição do JSON:
String jsonPessoa = "{'nome":"Eleazar','idade":26,"cidade":\Cotia"}";
O problema é que as aspas simples (') não são suportadas no JSON padrão, e há um erro na string "cidade":\Cotia". A versão correta seria:
String jsonPessoa = "{"nome":"Eleazar","idade":26,"cidade":"Cotia"}";
2️⃣ Erro na Conversão do JSON
No trecho:
Pessoa pessoa = gson.fromJson(JsonPessoa, Pessoa,class);
O problema está na chamada incorreta da conversão. "JsonPessoa" deve estar com 'j' minúsculo, e a forma correta de chamar o método é:
Pessoa pessoa = gson.fromJson(jsonPessoa, Pessoa.class);
3️⃣ Lidando com Campos Ausentes e Extras
O uso do GsonBuilder() com .setLenient() e .serializeNulls() é interessante para permitir que o JSON contenha campos extras ou faltem campos esperados. Nesse caso, o objeto Pessoa terá valores null nos campos que não estão presentes no JSON.
4️⃣ Classe Livro com Editora aninhada
A abordagem de @SerializedName("*") para ignorar campos desconhecidos pode não ser necessária. O Gson, por padrão, já ignora campos que não estão mapeados na classe. Se deseja garantir que ele ignore de forma explícita, pode utilizar @Expose ou configurar o GsonBuilder adequadamente.