2017-02-15 4 views
0

私はJsonを読み込もうとしましたが、このjsonレスポンスを基本要素にどのようにマッピングするのか分かりません。JSON with Retrofit

とこれは私のJSONがどのように見えるかです:

[ 
     { 
     12345: { 
      L Hendrik: { 
      CU.Administration ID: "12345_LJ", 
      CU.Customer ID: "L Hendrik", 
      CU.Name: "Coffeecompany L Hendrik" 
      } 
      } 
] 

"12345" はダイナミックなIDで、 "Lヘンドリックは、" 動的な名前です

マイコード:

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl("URLTOMYAPI") 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 


APIService service = retrofit.create(APIService.class); 
    Call<List<Student>> call = service.getStudentDetails(); 

    call.enqueue(new Callback<List<Student>>() { 
     @Override 
     public void onResponse(Call<List<Student>> call, Response<List<Student>> response) { 
      List<Student> students = response.body(); 

      String details = ""; 

      for(int i = 0; i<students.size(); i++){ 
       String name = students.get(i).getName(); 

       details += "\n\nname: " + name; 
      } 
      textDetails.setText(details); 
      pDialog.hide(); 
     } 

     @Override 
     public void onFailure(Call<List<Student>> call, Throwable t) { 
      pDialog.hide(); 
      Log.v("Test", "Failluree?"); 

      Log.v("Test", "Failluree?" + t); 

     } 
    }); 

と私のポーホー

public class Student implements Serializable { 

    private String name, address, custId; 
    private int mobile; 

    public String getCustId() { 
     return custId; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

私はPojoが正しくないことを知っていますが、このJsonから情報を取得する方法はわかりません。

+0

あなたは文字列として応答を取得し、それを解析するJSONObject'クラス 'に建て使用して、私は自分のコードでこれを行うことができますどのようにそれ – akash93

答えて

0

おそらく、GSONでJsonを解析できない場合は、手動でJsonを解析する必要があります。このように:あなたの鍵が動的なので

APIService service = retrofit.create(APIService.class); 
Call<JSONArray> call = service.getStudentDetails(); 

call.enqueue(new Callback<JSONArray>() { 
    @Override 
    public void onResponse(Call<JSONArray> call, Response<JSONArray> response) { 
     for(int idx = 0; idx < response.length(); idx++) { 
      JSONObject jsonObject = response.get(idx); 
      Iterator<String> keys = jsonObject.keys(); 
      while (keys.hasNext()) { 
      JSONObject object = jsonObject.optJSONObject(keys.next()).getJSONObject("L Hendrik"); 
       if (object != null) { 
        Student student = new Student(); 
        student.setName(object.optString("CU.Administration ID")); 
        // Other parse . 
       } 
      } 
     } 
    } 

    @Override 
    public void onFailure(Call<List<Student>> call, Throwable t) { 
     pDialog.hide(); 
     Log.v("Test", "Failluree?"); 

     Log.v("Test", "Failluree?" + t); 

    } 
}); 
+0

を反復処理する必要があります? – AlfaLaurens

+0

@AlfaLaurensこれを試す – Yat3s

+0

JsonObjectはJsonObjectではなくJsonArrayです。 – AlfaLaurens