Я пытаюсь разобрать 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?
это очень просто с инструментами 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ı