2017-04-24 1 views
0

Je consomme une API de mon application Android, et toutes les réponses JSON sont comme ceci:Comment utiliser retrofit pour analyser JSON gson en profondeur

[{ 
    "id": 1, 
    "title": "sell parm", 
    "created_by": "7", 
    "created_at": "2017-04-13T05:59:56.625Z", 
    "updated_at": "2017-04-13T05:59:56.625Z", 
    "items": [ 
     { 
     "id": 1, 
     "name": "item1", 
     "done": null, 
     "todo_id": 1, 
     "created_at": "2017-04-13T06:31:18.136Z", 
     "updated_at": "2017-04-13T06:31:18.136Z" 
     } 
    ] 
    }, 
    { 
    "id": 2, 
    "title": "brobro", 
    "created_by": "7", 
    "created_at": "2017-04-13T06:02:51.855Z", 
    "updated_at": "2017-04-13T06:02:51.855Z", 
    "items": [] 
    }, 
    { 
    "id": 3, 
    "title": "brobro", 
    "created_by": "7", 
    "created_at": "2017-04-13T06:16:13.186Z", 
    "updated_at": "2017-04-13T06:16:13.186Z", 
    "items": [] 
    }, 
    { 
    "id": 4, 
    "title": "brsro", 
    "created_by": "7", 
    "created_at": "2017-04-13T06:17:14.515Z", 
    "updated_at": "2017-04-13T06:17:14.515Z", 
    "items": [] 
    } 
] 

Le problème est que tous mes POJO ont Todo, les articles et je veux seulement un appel pour retorit2, liste de classe Todo.

Existe-t-il un moyen de créer un convertisseur personnalisé de Gson pour extraire toujours le champ Todo, donc retrofit renvoie le POJO approprié?

désolé. mon anglais est mauvais ...

+0

vérifier ma réponse –

Répondre

0

@Hyungsik vous pouvez faire quelque chose comme ça (Feel Free poser toutes les questions)

Créer une interface utilisée par Retrofit2 ou faire Addition Comme Après

public interface ApiInterface { 

    // Get Your Data 
    @GET("Your_API_URL") 
    Call<ArrayList<Pojo>> getMyData(); 
} 

Créer deux classes suivantes dans votre application.

Pojo.java

public class Pojo { 

    private Integer id; 
    private String title; 
    private String createdBy; 
    private String createdAt; 
    private String updatedAt; 
    private List<Item> items = null; 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getCreatedBy() { 
     return createdBy; 
    } 

    public void setCreatedBy(String createdBy) { 
     this.createdBy = createdBy; 
    } 

    public String getCreatedAt() { 
     return createdAt; 
    } 

    public void setCreatedAt(String createdAt) { 
     this.createdAt = createdAt; 
    } 

    public String getUpdatedAt() { 
     return updatedAt; 
    } 

    public void setUpdatedAt(String updatedAt) { 
     this.updatedAt = updatedAt; 
    } 

    public List<Item> getItems() { 
     return items; 
    } 

    public void setItems(List<Item> items) { 
     this.items = items; 
    } 

} 

et Item.java

class Item { 

    private Integer id; 
    private String name; 
    private Object done; 
    private Integer todoId; 
    private String createdAt; 
    private String updatedAt; 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public Object getDone() { 
     return done; 
    } 

    public void setDone(Object done) { 
     this.done = done; 
    } 

    public Integer getTodoId() { 
     return todoId; 
    } 

    public void setTodoId(Integer todoId) { 
     this.todoId = todoId; 
    } 

    public String getCreatedAt() { 
     return createdAt; 
    } 

    public void setCreatedAt(String createdAt) { 
     this.createdAt = createdAt; 
    } 

    public String getUpdatedAt() { 
     return updatedAt; 
    } 

    public void setUpdatedAt(String updatedAt) { 
     this.updatedAt = updatedAt; 
    } 
} 

Vous serez en mesure d'analyser vos données API utilisant ces classes très facilement.