2017-08-12 5 views
-1

je veux analyser Json avec ce format:Comment obtenir la liste des abonnés Instagram avec Java?

{"data": { 
    "user": { 
    "edge_follow": { 
     "count": 2554, "page_info": { 
     "node": { 
      "id": "5719761315", "username": "disneyangell" ... 
     "node": { 
      "id": "2260368333", "username": "moosa_sedaghat",... 
     "node": { 
      "id": "3982701506", "username": "alidadashi512", ... 
     . 
     . 
     . 

de cette link; j'ai obtenu mon pojo s de www.jsonschema2pojo.org/ i essayé GsonConverter et Jackson ObjectMapper aussi

le problème est analysé la liste des nœuds de l'objet est vide ou est toujours égale à zéro. comment résoudre ce problème? si je dois utiliser CustomConverter écrire cela pour ce cas.

Répondre

1

Pour obtenir le JSON souhaité, vous devez être connecté à instagiam. Sinon, vous obtiendrez un objet "bords" vide dans le JSON retourné à partir de votre demande d'obtention. Si vous êtes connecté ici est un exemple pour le faire avec Gson:

Le POJO (peut-être vous avez besoin d'ajouter des méthodes de lecture pour les champs qui vous intéressent):

public class FollowJson{ 
    Data data; 
    String status; 

    public ArrayList<FollowNode> getFollowNodes(){ 
     return data.getFollowNodes(); 
    } 

    class Data{ 
     User user; 

     public ArrayList<FollowNode> getFollowNodes(){ 
      return user.getFollowNodes(); 
     } 
    } 

    class User{ 
     EdgeFollow edge_follow; 

     public ArrayList<FollowNode> getFollowNodes(){ 
      return edge_follow.getFollowNodes(); 
     } 

    } 

    class EdgeFollow{ 
     Integer count; 
     ArrayList<OuterNode> edges; 
     HashMap<String, Object> page_info; 

     public ArrayList<FollowNode> getFollowNodes(){ 
      ArrayList<FollowNode> bufList = new ArrayList<FollowNode>(); 
      for(OuterNode outer : edges){ 
       bufList.add(outer.getNode()); 
      } 
      return bufList; 
     } 

    } 

    class OuterNode{ 
     FollowNode node; 

     public FollowNode getNode(){ 
      return node; 
     } 

    } 

    class FollowNode { 
     Boolean followed_by_viewer; 
     String full_name; 
     String id; 
     Boolean is_verified; 
     String profile_pic_url; 
     Boolean requested_by_viewer; 
     String username; 

     public Boolean getFollowedStatus(){ 
      return followed_by_user; 
     } 

     public String getId(){ 
      return id; 
     } 

     public String getUsername(){ 
      return username; 
     } 
    } 

} 

passe ensuite la POJO.class et la chaîne JSON à la Méthode:

public <T> T getJsonFromString(String jsonString, Class<T> var){ 
    GsonBuilder builder = new GsonBuilder(); 
    return builder.create().fromJson(jsonString, var); 
} 

Vous pouvez ensuite appeler getFollowNodes() de l'objet retourné, qui renvoie un tableau d'objets (FollowNode) représentant les « nœuds » dans le JSON.

+0

merci de ne pas avoir vérifié le corps de la réponse. mais maintenant comment obtenir ce json avec okhttp? Je veux dire comment mettre des cookies ou ... – Mehrad

+0

Je n'ai jamais travaillé avec okhttp mais en général vous pouvez utiliser java.net.CookieManager pour gérer les cookies. Vous obtenez les cookies de l'en-tête de réponse, par exemple en envoyant une requête get à https://www.instagram.com/accounts/login/. Vous envoyez ensuite une demande de publication au lien ci-dessus avec les cookies, les paramètres (nom d'utilisateur et mot de passe) et l'en-tête de demande nécessaire. Vous pouvez utiliser les outils de développement de votre navigateur pour vérifier ce que contient l'en-tête du message (comme: "Hôte", "csrftoken", ...). – TheDude

+0

J'ai trouvé le cookie dans le navigateur Http header et ça marche ... merci encore :) – Mehrad