Язык Java. Получение ссылки featured_media из json внутри рабочего цикла onResponse вызывая второй цикл

Только изучаю программирование Java. Создал парсинг объектов из json ответа для получения. Всё работает, но Внутри цикла в методе onResponse(JSONArray response) вместо url картинки получаю её id. По этому id можно получить новый url json JSONArray где в объектах так же есть нужная мне ссылка. Итого не могу понять как запустить onResponse и цикл внутри него самого второй раз, что бы получить нужный конечный url картинки.

код извлечения поста из json в нём конечно есть и извлечение других элементов в переопределённом методе onResponse

public void extractPosts(String URL) {
        View v = binding.getRoot();
        RequestQueue queue = Volley.newRequestQueue(mContext);
        JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET,
                URL,
                null,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        //Log.d("TAG", "onResponse" + response.toString());
                        for (int i = 0; i < response.length(); i++) {
                            // extract the date
                            try {
                                Post post = new Post();

                                //extract date. need create filtration for date
                                JSONObject jsonObjectData = response.getJSONObject(i);
                                

                                // extract title
                                JSONObject titleObject = jsonObjectData.getJSONObject("title");
                                post.setTitle(titleObject.getString("rendered"));

                                // extract content
                                JSONObject contentObject = jsonObjectData.getJSONObject("content");
                                post.setContent(contentObject.getString("rendered"));

                                //extract excerpt
                                JSONObject excerptObject = jsonObjectData.getJSONObject("excerpt");
                                post.setContent(excerptObject.getString("rendered"));

                                // extract image prew - ВОТ ТУТ У МЕНЯ ПРОБЛЕМА!

                                /*String stringIdImage = jsonObjectData.getString("featured_media");

                                JSONArray respond2 = new JSONArray(R.string.Url_Media)+stringIdImage))



                        String stringIdImage = jsonObjectData.getString("featured_media");



                        String strJsonUrlImage =
                        Log.d("BIG", getString(R.string.Url_Media)+stringIdImage);*/

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


                },
                new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(requireContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                } );

        queue.add(request);



    } ```
**Не знаю, делать отдельный метод на основе другой библиотеки? Или есть возможность переопределить onResponse дважды?
Спасибо всем кто помогает.**


   

Ответы (1 шт):

Автор решения: Сергей К

Проблема решена. Проблема была не во включении метода JsonArrayRequest onResponse внутрь самого себя, а в том, что новая ссылка json начиналась с объекта, а не с Array массива.

Итого в текущий код включён новый метод в который передаю подготовленную в прошлом методе ссылке.

public void extractImage(String URLImg) {
        String s = "WOOOOOOOOORRRRKKKKK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!";




        View v = binding.getRoot();
        String respond2;

        RequestQueue queue = Volley.newRequestQueue(mContext);
        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET,
                URLImg,
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {



                            String stringLink = response.getString("link");
                            //Log.d("IMG", stringLink);
                            //Log.d("IMG", s);
                            post.setFeature_image(stringLink);





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

                    }


                },
                new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(requireContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                });



        queue.add(request);






    }
→ Ссылка