2017-08-12 3 views
-1

ich will Json mit diesem Format analysieren:Wie bekomme ich Instagram-Follower-Liste mit 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", ... 
     . 
     . 
     . 

von diesen link; Ich habe meine pojo s aus www.jsonschema2pojo.org/ habe ich versucht GsonConverter und Jackson ObjectMapper auch

das Problem des Objekts Knotenliste analysiert wird, ist leer oder es ist immer Null. wie löst man das? Wenn ich CustomConverter verwenden muss, schreiben Sie das für diesen Fall.

Antwort

1

Um den gewünschten JSON zu erhalten, müssen Sie in instagiam eingeloggt sein. Andernfalls erhalten Sie ein leeres "Kanten" -Objekt im JSON, das von Ihrer Abrufanforderung zurückgegeben wurde. Wenn Sie sich hier angemeldet sind, ist ein Beispiel, es zu tun mit Gson:

Die POJO (vielleicht brauchen Sie Getter-Methoden für Felder hinzufügen Sie interessiert sind):

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; 
     } 
    } 

} 

dann die POJO.class passieren und die JSON String an die Methode:

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

Sie können dann rufen getFollowNodes() auf das zurückgegebene Objekt, die eine Reihe von Objekten zurückgibt (FollowNode), die die „Knoten“ in der JSON.

+0

danke, ich habe Antwort Körper nicht überprüft. aber jetzt, wie bekommt man diesen json mit okhttp? ich meine, wie man Plätzchen setzt oder ... – Mehrad

+0

Ich arbeitete nie mit okhttp, aber im Allgemeinen konnten Sie java.net.CookieManager verwenden, um die Plätzchen zu behandeln. Sie erhalten die Cookies aus dem Antwortheader, z. B. indem Sie eine Abrufanforderung an https://www.instagram.com/accounts/login/ senden. Sie senden dann eine Post-Anfrage an den obigen Link mit den Cookies, Parametern (Benutzername und Passwort) und dem notwendigen Anfrage-Header. Sie können die Entwicklerwerkzeuge Ihres Browsers verwenden, um zu überprüfen, was der Postheader enthält (wie: "Host", "csrftoken", ...). – TheDude

+0

Ich fand den Cookie im Browser Http Header und es funktioniert ... Danke nochmal :) – Mehrad

Verwandte Themen