почему массив json извлекает только первую запись

Эта проблема заключается в разборе JSON из MySQL. Я хочу сделать страницу входа в моем приложении для Android.
это моя проблема: пока приложение находится в состоянии отладки (на самом деле во время работы!) значение response (String json) содержит все элементы, а затем оно передает их моему ParseJSONuser. в этом упражнении значение jsonObject также содержит все элементы в json, но в моем jsonArray я вижу первую запись json и, конечно же, jsonArray.length () = 1, почему jsonArray извлекает только первый элемент (или одну запись json).

это класс ParseJSON:

public class ParseJSONUser {

private static String name_get, pass_get, email_get, imageid_get, credit_get, state_get;

public static final String JSON_ARRAY = "user";
public static final String KEY_NAME = "name";
public static final String KEY_EMAIL = "email";
public static final String KEY_PASS = "pass";
public static final String KEY_IMAGEID = "imageid";
public static final String KEY_CREDIT = "credit";
public static final String KEY_STATE = "state";

public ArrayList<ArrayList<String>> repository;

private JSONArray jsonArray = null;

private String json;

public ParseJSONUser(String json){
this.json = json;
}

protected void parseJSONuser(){

repository = new ArrayList<ArrayList<String>>();

JSONObject jsonObject = null;
try {

jsonObject = new JSONObject(json);
jsonArray = jsonObject.getJSONArray(JSON_ARRAY);

for(int i = 0; i<jsonArray.length() ; i++){
JSONObject jo = jsonArray.getJSONObject(0);
name_get = jo.getString(KEY_NAME);
email_get = jo.getString(KEY_EMAIL);
pass_get = jo.getString(KEY_PASS);
imageid_get = jo.getString(KEY_IMAGEID);
credit_get = jo.getString(KEY_CREDIT);
state_get = jo.getString(KEY_STATE);

ArrayList<String> al = new ArrayList<>();
al.add(0,name_get);
al.add(1,email_get);
al.add(2, pass_get);
al.add(3, imageid_get);
al.add(4, credit_get);
al.add(5, state_get);

repository.add(al);
}
} catch (JSONException e) {
e.printStackTrace();
}
}

и я использовал этот метод для получения данных от хоста в своей деятельности (ясно!)

    private void sendRequest() {

StringRequest stringRequest = new StringRequest(URL_GET,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
checkJSONuser(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(GateActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});

RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

и у меня есть php файл на моем хосте для получения всей таблицы (это хорошо работает)
это мой php код: https://gist.github.com/sadeghmohebbi/ef6e1e7b5a529596396a7d58f462ef7e

извините за мой английский. пожалуйста помогите … спасибо

-1

Решение

Это потому, что вы всегда получаете первую позицию в вашем цикле.
Вы должны использовать i параметр:

...
for(int i = 0; i<jsonArray.length() ; i++){
JSONObject jo = jsonArray.getJSONObject(i);
...
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]