이 에러가 뜨면 먼저 데이터베이스에서 받은 결과를 출력해봐야 한다.
아래 코드에서는 onResponse 메소드에 있는 response를 출력해주면 된다.
본인의 경우 ["123","123","123","123","test2"]가 출력되었다.
{}가 나오면 JSONObject형태이고 []가 나오면 JSONArray형태이다.
JSONArray형태인데 JSONObject를 이용해서 에러가 났다.
아래는 에러가 난 코드이다.
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
/* 주목해서 볼 부분 */
JSONObject jsonObject = new JSONObject(response);
JSONArray results = jsonObject.getJSONArray("result");
System.out.println(results);
for(int i = 0; i < jsonObject.length(); i++) {
JSONObject temp = results.getJSONObject(i);
String time = (String) temp.get("time");
String memo = (String) temp.get("memo");
String routine = (String) temp.get("routine");
String date = (String) temp.get("dates");
String title = jsonObject.getString("title");
}
}
}
};
아래와 같이 수정했고 이후 잘 동작하는 것을 확인할 수 있었다.
jsonArrayy에서 String으로 값으로 저장하기 위해선 getString()을 이용하면 된다.
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
/* 주목해서 볼 부분 */
System.out.println(response);
JSONArray jsonArray = new JSONArray(response); // response는 json문자열
System.out.println("길이 : " + jsonArray.length());
for(int i = 0; i < jsonArray.length() / 5; i++) {
String time = jsonArray.getString(0);
String memo = jsonArray.getString(1);
String routine = jsonArray.getString(2);
String date = jsonArray.getString(3);
String title = jsonArray.getString(4);
}
}
};