Я реализовал представление Volley и Recycler для анализа и отображения списка нескольких элементов из простого файла JSON.Есть моменты, когда ключ не существует в объекте, но может появиться в другом объекте.Этот ключ уже определен с использованием object.getInt ("someKey").
Как только Volley начинает анализировать объект с отсутствующим ключом, он выходит из цикла for (объекты хранятся в массиве) и перехватываетJSONException e, что именно то, что приложение должно делать в случае отсутствия ключа.
Однако я хотел бы предотвратить это поведение и использовать значение заполнителя для этого отсутствующего ключа этого конкретного объекта,чтобы список массивов был успешно собран, а представление переработчика заполнено, и приложение начинает работать нормально.
Какую логику я могу использовать для достижения этой цели?
Спасибо!
private void parseJSON() {
String url = "https://example.com/index.json";
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
try {
for (int i = 0; i < response.length(); i++) {
JSONObject object = response.getJSONObject(i);
String title = object.getString("subject");
String description = object.getString("message");
String imageUrl = object.getString("thumb");
Integer threadId = object.getInt("threadId");
mList.add(new Item( title, description, threadId));
}
mItemAdapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
В приведенном выше коде threadId является ключом, который может появляться или не отображаться во многих объектах JSON.