Android Volley JsonArrayRequest

时间:2017-07-18 15:56:20

标签: php android android-volley

通过SQL为我提供记录列表的PHP返回以下内容:

$result = $con->query($query);
for ($set = array (); $row = $result->fetch_assoc(); $set[] = json_encode($row));
print_r($set);

RESULTADO
Array
(
[0] => {"id":"8783","nombre":"pepe","username":"demo"}
[1] => {"id":"8784","nombre":"garcia","username":"demo"}
)

现在作为Android与Volley的流程,我有以下但显然不起作用:

JsonArrayRequest request = new JsonArrayRequest(URL_2,
                        new Response.Listener<JSONArray>() {
                            @Override
                            public void onResponse(JSONArray jsonArray) {
                                for(int i = 0; i < jsonArray.length(); i++) {
                                    try {
                                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                                        String nombre = jsonObject.getString("name");
                                        Log.e("nombre", nombre);
                                        mEntries.add(jsonObject.toString());

                                    }
                                    catch(JSONException e) {
                                        mEntries.add("Error: " + e.getLocalizedMessage());
                                    }

ERROR:

  

com.android.volley.ParseError:org.json.JSONException:Value Array of   类型java.lang.String无法转换为JSONArray

我通过在try中只留下以下内容来修改排球,并且它会抛出相同的错误

try {
   Integer cantidad = jsonArray.length();
   Log.e("cantidad: ", cantidad.toString());
}

我尝试使用它并继续相同的错误

public void onResponse(JSONArray response) {
   for(int i = 0; i < response.length(); i++) {
      try {
        Log.i("SUCCESS", response.toString());
      }
.....

1 个答案:

答案 0 :(得分:1)

更改您的php文件

$result = $con->query($query);
json_encode(["result" => $result]);

并在onResponse添加:

public void onResponse(JSONArray jsonArray) {
    JsonArray myData = jsonArray.getJSONArray(0);