I'm implementing a restful client using Android. I have API URL, token, etc. I implement this application using Retrofit 2 library, all are correct. But the JSON values do not display properly. I've tried several ways to solved this problem but can't find any correct solution for this.
This is my code:
JSON string
{"deposits":[{"id":806638,"amount":100,"status":"Canceled","reason":null},{"id":814436,"amount":1,"status":"Approved","reason":null},{"id":814452,"amount":1,"status":"Approved","reason":null},{"id":814505,"amount":1,"status":"Approved","reason":null}]}
Main Activity
void getRetrofitArray() {
    final String API_BASE_URL = "https://www.example.com/";
    final String credentials = "Bearer dfdfdfdlcdvksbdjsbdlvffdfddfdfdfjloiulfjuktj92p0JTFwJuFHlObIlWn8feQ_WA";
            OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .addInterceptor(new okhttp3.Interceptor() {
                @Override
                public Response intercept(okhttp3.Interceptor.Chain chain) throws IOException {
                    Request request = chain.request().newBuilder()
                            .addHeader("Authorization", credentials)
                            .addHeader("Accept", "application/json").build();
                    return chain.proceed(request);
                }
            }).addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
            .readTimeout(60, TimeUnit.SECONDS)
            .connectTimeout(60, TimeUnit.SECONDS)
            .build();
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_BASE_URL)
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    LoginApi service = retrofit.create(LoginApi.class);
    Call <List <Users>>call = service.getDeposits();
    Log.d("onResponse", "There is an xlllllllllllllllllllllkkkkkkklll");
    call.enqueue(new Callback<List<Users>>(){
        @Override
        public void onResponse(Call<List<Users>>call, retrofit2.Response<List<Users>>response) {
            try {
              // Users   UserData = response.body();
                List <Users> UserData =response.body();
                //String jsonString= response.body().toString();
               // Type listType = new TypeToken<List<Users>>(){}.getType();
                                      for (int i = 0; i < UserData.size(); i++) {
                     text_marks_1.setText("StudentMarks  : " +UserData.get(i).getDeposits());
                   // else if (i == 2) {
                        //text_id_2.setText("StudentId  :  " + UserData.get(i).getName());
                   //
               }
            } catch (Exception e) {
                Log.d("onResponse", "There is an error");
                e.printStackTrace();
            }
        }
        @Override
        public void onFailure(Call<List<Users>>call, Throwable t) {
            Log.d("onResponse", "There is an error");
            t.printStackTrace();
        }
    });
}
Users Class
public class Users {
    @SerializedName("deposits")
    @Expose
    private List<Deposit> deposits = new ArrayList<Deposit>();
    /**
     *
     * @return
     * The deposits
     *
     */
    public List<Deposit> getDeposits() {
        return deposits;
    }
    /**
     *
     * @param deposits
     * The deposits
     */
    public void setDeposits(List<Deposit> deposits) {
        this.deposits = deposits;
    }
}
Deposits Class
public class Deposit {
    @SerializedName("id")
    @Expose
    private Integer id;
    @SerializedName("amount")
    @Expose
    private Integer amount;
    @SerializedName("status")
    @Expose
    private String status;
    @SerializedName("reason")
    @Expose
    private Object reason;
    /**
     *
     * @return
     * The id
     */
    public Integer getId() {
        return id;
    }
    /**
     *
     * @param id
     * The id
     */
    public void setId(Integer id) {
        this.id = id;
    }
    /**
     *
     * @return
     * The amount
     */
    public Integer getAmount() {
        return amount;
    }
    /**
     *
     * @param amount
     * The amount
     */
    public void setAmount(Integer amount) {
        this.amount = amount;
    }
    /**
     *
     * @return
     * The status
     */
    public String getStatus() {
        return status;
    }
    /**
     *
     * @param status
     * The status
     */
    public void setStatus(String status) {
        this.status = status;
    }
    /**
     *
     * @return
     * The reason
     */
    public Object getReason() {
        return reason;
    }
    /**
     *
     * @param reason
     * The reason
     */
    public void setReason(Object reason) {
        this.reason = reason;
    }
}
interface class
public interface LoginApi {
    //@GET("/media/webservice/JsonReturn.php HTTP/1.1")
    // Call<List<User>> getUserDetails();
    @GET("api/deposits")
    Call <List<Users>> getDeposits();
}
edited...... new Deposit class
public class Deposit implements Serializable {
@SerializedName("deposits")
@Expose
private List<Deposit> deposits ;   
public List<Deposit> getDeposits() {
    return deposits;
}
public void setDeposits(List<Deposit> deposits) {
    this.deposits = deposits;
}
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("amount")
@Expose
private Integer amount;
@SerializedName("status")
@Expose
private String status;
@SerializedName("reason")
@Expose
private Object reason;
public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}
public Integer getAmount() {
    return amount;
}
public void setAmount(Integer amount) {
    this.amount = amount;
}
public String getStatus() {
    return status;
}
public void setStatus(String status) {
    this.status = status;
}
public Object getReason() {
    return reason;
}
public void setReason(Object reason) {
    this.reason = reason;
}}
 
    