2016-11-30 4 views
-2

У меня есть чистый и простой вопрос, как читать это с помощью Android Дооснащении 2,0Android дооснащения читает объект JSON

{ 
    "status": true, 

"body": { 

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

Я хочу читать «экспертизы»

я использовал классы модели следующим образом: Экспертизы:

public class Expertises { 
    @SerializedName("status") 
    private String status; 
    @SerializedName("expertises") 
    ExpertisesResponse expertisesResponse; 

    public ExpertisesResponse getExpertisesResponse() { 
     return expertisesResponse; 
    } 

    public void setExpertisesResponse(ExpertisesResponse expertisesResponse) { 
     this.expertisesResponse = expertisesResponse; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 
} 

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

Но я получаю исключение NullPointer для ExpertisesResposne. PLease Я хочу улучшения или исправления, если что-то не так.

Это, как я назвал:

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

Да, но будет лучше, если вы сможете сказать, потому что у меня путают на «экспертизах» – Danish

+0

Со временем меняется количество экспертов? Всегда есть три? –

ответ

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 способа сделать: 1-реструктурировать ваш json, возвращенный с помощью unchnaged 'key'. 2. Разбирайте динамические клавиши вручную (вам нужно вручную разобрать) [link] http://stackoverflow.com/questions/7304002/how-to-parse-a-dynamic-json-key-in-a-nested-json- результат. Я думаю, что если вы используете модификацию с автоматическим парсингом, вы предлагаете вам первый способ. –

+0

OK Спасибо RoShan Shan :) – Danish

Смежные вопросы