im nouveau ici et j'ai un problème que je ne peux pas résoudre.Erreur dans Android JsonDeserializer lors de la réponse
im obtenir cette erreur dans le débogage dans le temps d'exécution:
05-02 11:56:07.539 18645-24466/com.appss.appssapp D/Retrofit﹕ java.lang.NullPointerException: Null pointer exception during instruction 'invoke-static {v0, v2}, java.util.ArrayList com.appss.appssapp.io.model.PostsResponse$MainResponse.access$002(com.appss.appssapp.io.model.PostsResponse$MainResponse, java.util.ArrayList) // [email protected]'
at com.appss.appssapp.io.model.PostsResponse.setPosts(PostsResponse.java:21)
at com.appss.appssapp.io.deserializer.PostsResponseDeserializer.deserialize(PostsResponseDeserializer.java:31)
at com.appss.appssapp.io.deserializer.PostsResponseDeserializer.deserialize(PostsResponseDeserializer.java:21)
at com.google.gson.TreeTypeAdapter.read(TreeTypeAdapter.java:58)
at com.google.gson.Gson.fromJson(Gson.java:810)
at com.google.gson.Gson.fromJson(Gson.java:775)
at retrofit.converter.GsonConverter.fromBody(GsonConverter.java:63)
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:367)
at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at retrofit.Platform$Android$2$1.run(Platform.java:142)
at java.lang.Thread.run(Thread.java:818)
l'application est compilé correctement, exécutez sans problème, mais quand je fais les appels à l'API ne montre pas les données, i signifie, l'API envoie les données, et je fais ce que j'ai à faire avec, mais quand j'essaie d'envoyer des données à la réponse dans le débogage me montre le problème que j'ai écrit ci-dessus.
ceci est mon code.
Posts.JAVA
public class Posts {
String id; //Id de la publicacion
String titulo; // Titulo de la publicacion
String url; // Url de la publicacion
String imagen; // Imagen cover la publicacion
String autor_nick; // Nick del autor de la publicacion
String visitas; // Lecturas de la publicacion
String comentarios; // Cantidad de comentarios de la publicacion
public Posts() {}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getImagen() {
return imagen;
}
public void setImagen(String imagen) {
this.imagen = imagen;
}
public String getAutor_nick() {
return autor_nick;
}
public void setAutor_nick(String autor_nick) {
this.autor_nick = autor_nick;
}
public String getVisitas() {
return visitas;
}
public void setVisitas(String visitas) {
this.visitas = visitas;
}
public String getComentarios() {
return comentarios;
}
public void setComentarios(String comentarios) {
this.comentarios = comentarios;
}
}
PostsResponse.JAVA
public class PostsResponse {
private MainResponse mainResponse;
public ArrayList<Posts> getPosts(){
return mainResponse.posts;
}
public void setPosts(ArrayList<Posts> posts) {
mainResponse.posts = posts;
}
private class MainResponse {
private ArrayList<Posts> posts;
}
}
PostResponseDeserializer.JAVA
public class PostsResponseDeserializer implements JsonDeserializer<PostsResponse> {
@Override
public PostsResponse deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
Gson gson = new Gson();
PostsResponse response = gson.fromJson(json, PostsResponse.class);
JsonObject postsResponseData = json.getAsJsonObject();
JsonArray postsArray = postsResponseData.getAsJsonArray("posts");
response.setPosts(extractPostsFromJsonArray(postsArray));
return response;
}
private ArrayList<Posts> extractPostsFromJsonArray(JsonArray postsArray) {
ArrayList<Posts> posts = new ArrayList<>();
for (int i = 0; i < postsArray.size(); i++) {
JsonObject postsDatos = postsArray.get(i).getAsJsonObject();
Posts actualPost = new Posts();
String titulo = postsDatos.get("titulo").getAsString();
String imagen = postsDatos.get("imagen_370x208").getAsString();
String visitas = postsDatos.get("visitas").getAsString();
actualPost.setTitulo(titulo);
actualPost.setImagen(imagen);
actualPost.setVisitas(visitas);
posts.add(actualPost);
}
return posts;
}
}
Je pense que le problème pourrait être ici response.setPosts (extractPostsFromJsonArray (postsArray));
mais je n'arrive pas à comprendre pourquoi cela se produit.
Une aide? .. Et désolé pour mon mauvais anglais.
Je suis nouveau dans android et Java. les réponses que vous m'avez données ont résolu mon problème. Merci beaucoup! –