2016-01-05 2 views
4

Я хочу получать JSON от [этой ссылке] [1]: https://api.myjson.com/bins/38ln5 использованием ДООСНАСТКЕFetching объект JSON и массив из дооснащения

образец является JSON

{ 
    "students": [ 
    { 
     "id": "1", 
     "name": "Larzobispa" 
    }, 
    { 
     "id": "2", 
     "name": "La Cibeles" 
    } 
    ] 
} 

Пожалуйста, объясните детали, как сделать это. Большое спасибо, ребята!

ответ

6

Модернизация автоматически проанализирует объект JSON, а также JSON Array.

@GET("/[email protected]") 
public void responseString(Callback<Student> response); 

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

public class Student{ 
private ArrayList<StudentInfo> studentList = new ArrayList<>(); 
    //getter and setters 
} 

public class StudentInfo{ 
    private String id; 
    private String name; 
    //getters and setters 
} 

Тогда в ответ:

@Override 
public void onResponse(Response<Student> response, Retrofit retrofit) { 
    if (response.isSuccess()) { 
     Student student = response.body; 
     Log.e("Student name", student.getStudent().get(0).getName()); // do whatever you want 
    }else{ 
     // get response.errorBody() 
    } 
} 
+1

Спасибо парень! Это полезно для меня ... – Emma

0

Вы можете получить доступ как JSONArray и JSONObject с помощью переоснащения 2.0 в Android. Здесь вы хотите получить доступ к JSONArray с помощью переоснащения, для которого вы должны сделать следующее:

интерфейса Класс:

 


package com.androidtutorialpoint.retrofitandroid; 
import java.util.List; 

import retrofit.Call; 
import retrofit.http.GET; 

/** 
* Created by navneet on 4/6/16. 
*/ 
public interface RetrofitArrayAPI { 

    /* 
    * Retrofit get annotation with our URL 
    * And our method that will return us details of student. 
    */ 
    @GET("api/RetrofitAndroidArrayResponse") 
    Call> getStudentDetails(); 

} 

 

выше интерфейс. Теперь, чтобы отобразить данные JSONArray на вашем вызове экрана смартфона следующие функции:

 


    void getRetrofitArray() { 
    Retrofit retrofit = new Retrofit.Builder() 
       .baseUrl(url) 
       .addConverterFactory(GsonConverterFactory.create()) 
       .build(); 

     RetrofitArrayAPI service = retrofit.create(RetrofitArrayAPI.class); 

     Call> call = service.getStudentDetails(); 

     call.enqueue(new Callback>() { 

     @Override 
      public void onResponse(Response> response, Retrofit retrofit) { 

       try { 
       List StudentData = response.body(); 
       for (int i = 0; i<StudentData.size(); i++) { 
        if (i == 0) { 
          text_id_1.setText("StudentId : " + StudentData.get(i).getStudentId()); 
          text_name_1.setText("StudentName : " + StudentData.get(i).getStudentName()); 
          text_marks_1.setText("StudentMarks : " + StudentData.get(i).getStudentMarks()); 
        } else if (i == 1) { 
          text_id_2.setText("StudentId : " + StudentData.get(i).getStudentId()); 
          text_name_2.setText("StudentName : " + StudentData.get(i).getStudentName()); 
          text_marks_2.setText("StudentMarks : " + StudentData.get(i).getStudentMarks()); 
        } 
       } 
       } catch (Exception e) { 
        Log.d("onResponse", "There is an error"); 
        e.printStackTrace(); 
       } 
      } 

      @Override 
      public void onFailure(Throwable t) { 
       Log.d("onFailure", t.toString()); 
      } 

     }); 
    } 

 

Мой POJO класс был следующим:

 


    package com.androidtutorialpoint.retrofitandroid; 

public class Student { 

    //Variables that are in our json 
    private int StudentId; 
    private String StudentName; 
    private String StudentMarks; 
    private int inStock; 

    //Getters and setters 
    public int getStudentId() { 
     return StudentId; 
    } 

    public void setStudentId(int bookId) { 
     this.StudentId = StudentId; 
    } 

    public String getStudentName() { 
     return StudentName; 
    } 

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

    public String getStudentMarks() { 
     return StudentMarks; 
    } 

    public void setStudentMarks(String price) { 
     this.StudentMarks = StudentMarks; 
    } 

} 

 

Итак, таким образом, вы будете иметь возможность захватить JSONArray из URL с помощью дооснащения 2,0 и отобразить эти данные на экране.

Надеюсь, я смогу ответить на ваш запрос.

Кредиты: Я прочитал этот учебник по: AndroidTutorialPoint for Retrofit 2.0