Как разобрать массив JSON в массиве с помощью Volley?

Я пытаюсь разобрать json со своего сайта.

JSON:https://www.yemeklerimiz.com/?json=get_category_posts&id=6

В json есть 2 массива. Не могу разобрать массив posts, потому что до него пришел массив category.

Мой залп:

 public void getPosts() {
    String url = Constant.baseUrl+"?json=get_category_posts&id = "+getIntent().getStringExtra("CAT_ID");
    StringRequest request = new StringRequest(url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            try {
                JSONObject jsonObject = new JSONObject(response);
                JSONArray  datas = jsonObject.getJSONArray("0");
                for (int i = 0; i < datas.length(); i++) {
                    PostsModel postsModel = new PostsModel();
                    JSONObject jo = datas.getJSONObject(i);
                    String id = jo.getString("id");
                    String url = jo.getString("url");
                    String title = jo.getString("title");
                    Log.d("IMAGEUR", url);
                    postsModel.setID(id);
                    postsModel.setImageURL(url);
                    postsModel.setTitle(title);
                    postsModelArrayList.add(postsModel);
                    postsAdapter.notifyDataSetChanged();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

    RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext());
    requestQueue.add(request);
}

Это не сработает. Что я могу сделать, чтобы получить объекты JSONObject в массиве posts?

0
0
708
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

это очень просто с инструментами JSON, такими как GSON или LoganSquare, .... вы должны сначала создать модель, в которой поля имеют аннотации, затем создать конструктор и, наконец, преобразовать исходную строку JSON в модель,

вы можете увидеть пример в эта ссылка;

Я предлагаю использовать дооснащение вместо Volley, потому что это очень просто и быстрее, чем Volley.

Ответ принят как подходящий

Хотя я согласен с ответом saeedata, я хотел бы объяснить вам, как вы можете заставить этот код работать в его текущем состоянии и без модернизации. Думаю, это поможет вам лучше понять, как работает JSON.

Итак, что у вас есть: Главный объект JSON, который является вашим ответом, и мы можем считать его корнем. Внутри этого объекта JSON «ответа» у вас есть такие поля, как «количество» и «страницы», а также еще одно поле, которое является массивом JSON и называется «сообщения». Это поле «сообщений» само по себе содержит различные другие объекты JSON.

Следующий фрагмент кода показывает, как получить объекты сообщений и поля в них.

     JSONObject responseJSON = new JSONObject(response);
     // Retrieve the posts JSON array from the response
     JSONArray postsArray = jsonObject.getJSONArray("posts");

     for (int i = 0; i < datas.length(); i++) { //loop to iterate in JSON array
            //retrieve the single postObject in array
            JSONObject postObject = postsArray.getJSONObject(i);

            //get fields from the postObject
            String id = postObject.getString("id");
            String url = postObject.getString("url");
            String title = postObject.getString("title");
            Log.d("Title for " + i.toString(), title);
     }

Результат будет следующим:

Название для 0: Чизкейк Unsuz Şekersiz
Название для 1: Hurmalı Şekersiz Browni
Название для 2: Чизкейк Kırmızı Meyveli Pratik
Название для 3: Tropikal Blondie
Название за 4: Glutensiz Şekersiz ikolatalı Muzlu Kek
Название для 5: Starbucks Havuçlu Kek
Название для 6: Çikolatalı Dondurma
Название для 7: Saray Helvası

Другие вопросы по теме