2016-11-30 6 views
-2

私はどのように私は次のように私はモデルクラスを使用しているは、Androidのレトロフィットは、JSONオブジェクトを読ん

「expertisesを」読みたい本使ってAndroidのレトロフィット2.0

{ 
    "status": true, 

"body": { 

    "expertises": { 
     "1": "Family Law", 
     "2": "Land and Asset", 
     "3": "Sexual Offense" 
    } 
    } 
} 

を読み取るために、クリーンでシンプルな疑問を持っています: Expertises:

​​

ExpertisesResponse:

public class ExpertisesResponse { 

    @SerializedName("1") 
    private String expertiseOne; 
    @SerializedName("2") 
    private String expertiseTwo; 
    @SerializedName("3") 
    private String expertiseThree; 

    public String getExpertiseOne() { 
     return expertiseOne; 
    } 

    public ExpertisesResponse(String expertiseOne, String expertiseTwo, String expertiseThree) { 
     this.expertiseOne = expertiseOne; 
     this.expertiseTwo = expertiseTwo; 
     this.expertiseThree = expertiseThree; 
    } 



    public String getExpertiseTwo() { 
     return expertiseTwo; 
    } 

    public String getExpertiseThree() { 
     return expertiseThree; 
    } 

    public void setExpertiseOne(String expertiseOne) { 
     this.expertiseOne = expertiseOne; 
    } 

    public void setExpertiseTwo(String expertiseTwo) { 
     this.expertiseTwo = expertiseTwo; 
    } 

    public void setExpertiseThree(String expertiseThree) { 
     this.expertiseThree = expertiseThree; 
    } 
} 

しかしExpertiresResposneの例外NullPointerを取得しています。私は何かが間違っている場合、いくつかの改善や修正をしたい。

ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class); 
     Call<Expertises> getExpertises = apiInterface.getExpertise(); 
     getExpertises.enqueue(new Callback<Expertises>() { 
      @Override 
      public void onResponse(Call<Expertises> call, Response<Expertises> response) { 

       Toast.makeText(getApplicationContext(),response.body().getExpertisesResponse().getExpertiseOne(),Toast.LENGTH_SHORT).show(); 

      } 

      @Override 
      public void onFailure(Call<Expertises> call, Throwable t) { 

      } 
     }); 
    } 
+0

あなたはそのためのモデルクラスを作成していますか? – PriyankaChauhan

+0

はい、私は "expertises"に混乱しているので、あなたが告げることができればより良いでしょう – Danish

+0

時間の経過と共に専門知識の数が変化しますか?これらは常に3つありますか? –

答えて

0

あなたはクラスBody被覆クラスExpertisesResponseを逃した:

これは私が呼ばれる方法です。以下のようにする必要があります:

class Body { 

@SerializedName("expertises") 
    ExpertisesResponse expertisesResponse; 

} 

とクラスExpertises

public class Expertises { 
    @SerializedName("status") 
    private String status; 
    @SerializedName("body") 
    Body body; 
} 
+0

ありがとうございました!今最後のことは、将来、jsonレスポンスのこれらの「専門家」が増えたらどうなるでしょうか?そのシナリオにどう対応するのですか? – Danish

+0

'' expertises'の値が変更された場合。 2つの方法があります:あなたのjsonが技術的でない 'key'で返された1再構成。 2.手動でパースする必要があります(手動で解析する必要があります)[リンク] http://stackoverflow.com/questions/7304002/how-to-parse-a-dynamic-json-key-in-a-nested-json-結果。私はあなたが自動解析で改造を使用する場合は、あなたが最初の方法をお勧めします。 –

+0

OKありがとうRoShan Shan :) – Danish

関連する問題