Как я могу получить данные из массива внутри массива Android Studio JSONArray - PullRequest
0 голосов
/ 26 марта 2019

Я получаю ответ от API в виде JSONarray, и я могу получить данные в мою модель массива, но проблема в том, что мне нужны определенные данные из одного массива, и я не знаю, как это сделать.

Массив:

"history": [
        {
            "id": "20",
            "code": "mcw_5b97de588ce0c",
            "date": "2018-09-11 17:25:12",
            "status": "1",
            "name": "a:1:{s:7:\"english\";s:9:\"rent bill\";}",
            "img": "shop.png"
        }

Я хочу английский, S: 9 и данные арендной платы от имени.

Я публикую здесь свой код, чтобы вы могли понять, что у меня естьсделано и какую ошибку я совершаю.

public void  shopListing()
{

    showSimpleProgressDialog(this, "Loading...","Fetching Shops History",false);

    StringRequest stringRequest = new StringRequest(Request.Method.POST, shopurl,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    Log.d("strrrrr", ">>" + response);

                    try {

                        JSONObject obj = new JSONObject(response);
                        //if(obj.optString("status").equals("true")){

                        dataModelArrayList = new ArrayList<>();
                        JSONArray dataArray  = obj.getJSONArray("history");

                        for (int i = 0; i < dataArray.length(); i++) {

                            shopModel playerModel = new shopModel();
                            JSONObject dataobj = dataArray.getJSONObject(i);
                            playerModel.setId(dataobj.getString("id"));
                            playerModel.setName(dataobj.getString("name"));
                            playerModel.setDetails(dataobj.getString("date"));


                            dataModelArrayList.add(playerModel);

                        }

                        setupListview();

                        // }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }

            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //displaying the error in toast if occurrs
                    Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                }
            }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {

            String api = getApi_key();
            String user = getUser_key();

            Map<String, String> param = new HashMap<> ();
            param.put("api_key", api);
            param.put("user_key", user);


            return param;
        }
    };
    RequestQueue requestQueue = Volley.newRequestQueue(this);

    requestQueue.add(stringRequest);

}

1 Ответ

0 голосов
/ 26 марта 2019

Ваш сервер не отвечает. вместо того, чтобы посылать вам имя в виде строки, он должен вернуть вам «имя» в виде объекта, подобного этому:

"history": [
    {
        "id": "20",
        "code": "mcw_5b97de588ce0c",
        "date": "2018-09-11 17:25:12",
        "status": "1",
        "name": 
            {
                "s":7,
                "subject":"english",
                "s":9,
                "any_key":"rent bill"
            },
        "img": "shop.png"
    }

Мне кажется, что сервер возвращает вам строку кода, которую вы написали для обработки запроса от клиента. Пожалуйста, проверьте дважды.

...