Я разрабатываю приложение для Android, которое извлекает данные с сервера через HTTP GET
, сохраняет ответ (формат JSON
) в строке. Я хочу проанализировать строку и получить значения в пределах JSONArray
.
Полученный JSON, который хранится в STRING:
{"code":1,"data":{"survey":{"id":null,"questionAnswers":[{"id":null,"min":"1","max":"5","step":"0.1","last":"4.7","text":"I am happy at work today","key":"Mood","testQuestionId":"1","datetime":"2014-04-29 15:47:02","answer":"4.7","testAnswerId":null}]}}
Я хочу проанализировать массив JSON "questionAnswers"
и получить значение в "answer"
, которое находится внутри JSONObject
.
Код, который я использовал, выглядит следующим образом:
JSONObject jsonObj_survey = new JSONObject(Get_MySurvey_JSON);
JSONObject jsondata_survey = jsonObj_survey.getJSONObject("data");
JSONArray jsonArray_questionAnswer = jsondata_survey
.getJSONArray("questionAnswers");
for (int i = 0; i < jsonArray_questionAnswer.length(); i++) {
JSONObject questionAnswer = jsonArray_questionAnswer
.getJSONObject(i);
my_Company_survey_rating[i] = questionAnswer.getString("answer");
// userdata.setMy_Company_Top_key_1(my_Company_Top_key[1]);
Log.d("Rating", my_Company_survey_rating[i]);
}
Я не могу разобрать его и получить исключение:
04-29 18:28:00.272: W/System.err(13189): org.json.JSONException: No value for questionAnswers
04-29 18:28:00.272: W/System.err(13189): at org.json.JSONObject.get(JSONObject.java:354)
04-29 18:28:00.272: W/System.err(13189): at org.json.JSONObject.getJSONArray(JSONObject.java:548)
04-29 18:28:00.272: W/System.err(13189): at com.moodwonder.fi.HTTP_SignIn_Thread.doInBackground(HTTP_SignIn_Thread.java:224)
04-29 18:28:00.272: W/System.err(13189): at com.moodwonder.fi.HTTP_SignIn_Thread.doInBackground(HTTP_SignIn_Thread.java:1)
04-29 18:28:00.272: W/System.err(13189): at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-29 18:28:00.272: W/System.err(13189): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-29 18:28:00.272: W/System.err(13189): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-29 18:28:00.272: W/System.err(13189): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-29 18:28:00.272: W/System.err(13189): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-29 18:28:00.272: W/System.err(13189): at java.lang.Thread.run(Thread.java:841)