2017-08-12 2 views
-1

私はこの形式でJsonを解析する:このlinkからJavaでinstagram followersのリストを取得するには?

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

。 私は、問題は、オブジェクトのノードリストが空であるか、それは常にゼロです解析されるも

GsonConverterとジャクソンObjectMapperを試してみましたwww.jsonschema2pojo.org/ から私のpojo Sを得ました。 これを解決するには? この場合はCustomConverterと書いてください。

答えて

1

JSONを取得するには、instagiamにログインする必要があります。それ以外の場合は、get要求から返されたJSON内に空の "edges"オブジェクトがあります。あなたはここにログインしている場合の例では、Gsonでそれを行うことです。

POJO(多分はあなたが興味のあるフィールドに対してgetterメソッドを追加する必要があります):

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

} 

はその後POJO.classを渡します及び方法にJSON文字列:

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

はその後、JSONの「ノード」を表すオブジェクトの配列(FollowNode)を返し、返されたオブジェクト、上getFollowNodes()を呼び出すことができます。

+0

私はレスポンスボディをチェックしませんでした。しかし今、oksoniでそのjsonを取得する方法は?私はクッキーを設定する方法を意味します... – Mehrad

+0

私はokhttpで働いたことはありませんが、通常はクッキーを処理するためにjava.net.CookieManagerを使用することができます。例えばhttps://www.instagram.com/accounts/login/へのgetリクエストを送信するなどして、応答ヘッダーからCookieを取得します。 Cookie、パラメータ(ユーザー名とパスワード)、および必要なリクエストヘッダーを使用して、上記のリンクへの投稿要求を送信します。ブラウザの開発者ツールを使用して、ポストヘッダに含まれる内容(「Host」、「csrftoken」など)を確認することができます。 – TheDude

+0

ブラウザのHttpヘッダーにCookieが見つかりました。それは動作しています...もう一度感謝します:) – Mehrad

関連する問題