Desserializando classe interna com gson retorna null
Esta é a primeira vez que faço uma pergunta aqui, depois de 3 anos de ciência da computação, tão nua comigo.
Eu quero usar o Gson para desserializar meu JSON em objetos. Eu defini as classes apropriadas, e alguns desses objetos de classe estão incluídos em outros objetos. Ao tentar desserializar todo o JSON, obtive valores nulos, então comecei a desmembrá-lo.
Cheguei ao ponto em que todas as classes inferiores se posicionam sozinhas, mas ao tentar desserializar em um objeto que contém uma instância desse objeto menor - tudo retorna como nulo.
Meu JSON parcial:
{
"user_profile": {
"pk": 1,
"model": "vcb.userprofile",
"fields": {
"photo": "images/users/Screen_Shot_2013-03-18_at_5.24.13_PM.png",
"facebook_url": "https://google.com/facebook",
"site_name": "simple food",
"user": {
"pk": 1,
"model": "auth.user",
"fields": {
"first_name": "blue",
"last_name": "bla"
}
},
"site_url": "https://google.com/"
}
}
}
Classe UserProfile:
public class UserProfile {
private int pk;
private String model;
private UPfields fields = new UPfields();//i tried with and without the "new"
}
Classe UPfields:
public class UPfields {
private String photo;
private String facebook_url;
private String site_name;
private User user;
private String site_url;
}
Classe de Usuário:
public class User {
private int pk;
private String model;
private Ufields fields;
}
Classe de Ufields:
public class Ufields {
private String first_name;
private String last_name;
}
Na minha principal eu chamo:
Gson gson = new Gson();
UserProfile temp = gson.fromJson(json, UserProfile.class);
Portanto, meu objeto temporário contém apenas valores nulos. Eu tentei mudar as classes para estática, e isso não funciona. O objeto UPfields e todo o inferior funcionam bem.
Alguma sugestão?? quando eu remover o
"{" user_profile ":" e está fechando o colchete, o objeto desserializar para um user_profile funciona.