Как разобрать JSON Array в Array с помощью Volley? - PullRequest
0 голосов
/ 24 ноября 2018

Я пытаюсь разобрать 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);
}

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

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

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

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

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

     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: Глутенсиз Чекерсиз Чиколаталы Музлу Кек
Название для 5: Старбакс Хавучлу Кек
Название для 6: Чиколаталы Дондурма
Название для 7: Сарай Хелваши

0 голосов
/ 24 ноября 2018

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...