【发布时间】:2021-12-20 00:21:40
【问题描述】:
这是一个我想从 API 获取数据的函数。其他值的所有值都是正确的,但有两个属性 1. already_enrolled 和 2. Liked,它们是整数,API 返回这两个属性的整数值。但是当我在 android 应用程序 getInt() 中的 java 代码中获取它们的值时,为对象返回 0。 以下是 API 的响应:
{"subjects":[{"id":1,"name":"word","package_id":2,"created_at":"2021-06-21T00:00:00.000000Z","updated_at":"2021-11-06T06:06:02.000000Z","courses_count":1,"likes_count":0,"enrolled_count":0,"rates_count":0,"rate_sum":null,"liked":0,"already_enrolled":0,
"level":{"id":1,"package_id":2,"subject_id":1,"sequence":0,"level":"Beginner","created_at":null,"updated_at":null}},
{"id":4,"name":"PowerPoint\r\n","package_id":2,"created_at":"-000001-11-30T00:00:00.000000Z","updated_at":"2021-11-06T00:00:00.000000Z","courses_count":1,"likes_count":0,"enrolled_count":0,"rates_count":0,"rate_sum":null,"liked":0,"already_enrolled":0,
"level":{"id":3,"package_id":2,"subject_id":4,"sequence":2,"level":"0 to 100","created_at":null,"updated_at":null}},
{"id":5,"name":"Excel","package_id":2,"created_at":"-000001-11-30T00:00:00.000000Z","updated_at":"2021-11-06T00:00:00.000000Z","courses_count":1,"likes_count":0,"enrolled_count":0,"rates_count":0,"rate_sum":null,"liked":0,"already_enrolled":0,
"level":{"id":2,"package_id":2,"subject_id":5,"sequence":1,"level":"Intermediate","created_at":null,"updated_at":null}},
{"id":8,"name":"Outlook","package_id":2,"created_at":"-000001-11-30T00:00:00.000000Z","updated_at":"2021-11-06T00:00:00.000000Z","courses_count":9,"likes_count":1,"enrolled_count":1,"rates_count":1,"rate_sum":2.5,"liked":1,"already_enrolled":1,
"level":{"id":6,"package_id":2,"subject_id":8,"sequence":3,"level":"zero to hero","created_at":null,"updated_at":null}}
]} ```
for the last object already_enrolled and liked values are 1 but when I get its value in android it returns 0.
Here is my Java Code:
``` public void getSubjects(JSONObject object, final onSubjectRecieved subjectRecieved)
{
final JsonObjectRequest request = new JsonObjectRequest(Request.Method.POST, URL.getRootUrl() + "subjects",object, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
List<Subject> subjects = new ArrayList<>();
try
{
JSONArray sbjs = response.getJSONArray("subjects");
for(int i = 0; i< sbjs.length();i++)
{
Subject sbj = new Subject();
JSONObject obj = sbjs.getJSONObject(i);
sbj.setId(obj.getInt("id"));
Log.i("testtttts",obj.get("already_enrolled")+""+obj.getInt("id"));
sbj.setTitle(obj.getString("name"));
sbj.setPackage_id(obj.getInt("package_id"));
JSONObject level = obj.getJSONObject("level");
if(level != null)
{
sbj.setLevel(level.getString("level"));
sbj.setLevel_id(level.getInt("sequence"));
}
sbj.setVideos(obj.getInt("courses_count"));
sbj.setLikes(obj.getInt("likes_count"));
sbj.setEnrolleds(obj.getInt("enrolled_count"));
sbj.setRates(obj.getInt("rates_count"));
if(obj.getInt("rates_count") > 0)
{
sbj.setRate_sum(obj.getDouble("rate_sum"));
}else
{
sbj.setRate_sum(0);
}
subjects.add(sbj);
}
subjectRecieved.onRecieved(subjects);
}catch(Exception e)
{
subjectRecieved.onError(e.toString());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
subjectRecieved.onError(error.toString());
}
}){
public Map<String, String> getHeaders() {
Map<String, String> params = new HashMap<String, String>();
SessionSharedPrefrence ssp = new SessionSharedPrefrence(context);
params.put("Authorization", "Bearer " + ssp.getToken());
return params;
}
};
request.setRetryPolicy(new DefaultRetryPolicy(15000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Volley.newRequestQueue(context).add(request);
}
这是日志结果
I/testtttts: 01
04
I/testtttts: 05
08 ```
【问题讨论】: