I'm currently working on a test app for android and need to parse the JSON test data.
The JSON looks like this:
{"id":1,"name":"Test Test","questions":[{"id":1,"test":1,"text":"Kannst du diese Frage beantworten?","answers":[{"id":1,"question":1,"text":"Ja, das ist richtig.","correct":1},{"id":2,"question":1,"text":"Diese Antwort ist falsch.","correct":0},{"id":3,"question":1,"text":"Diese hier ist ebenfalls nicht so ganz korrekt.","correct":0}]},{"id":2,"test":1,"text":"Diese Frage hier ist nicht korrekt.","answers":[{"id":4,"question":2,"text":"Ich glaube dir nicht, das hier ist eh richtig.","correct":1},{"id":5,"question":2,"text":"Diese Antwort ist falsch.","correct":0},{"id":6,"question":2,"text":"Diese hier ist ebenfalls nicht so ganz korrekt.","correct":0}]}]}
What I need is to extract the questions and its' child data.
What I tried is:
JSONObject jObject = new JSONObject(result);
String test = jObject.getJSONObject("id").getJSONArray("questions").toString();
And
String myString = jObject .getJSONObject("questions").getJSONObject("answers").getString("text");
Parse your data like this :
public class DataModel {
int id;
String name;
ArrayList<Question> questions = new ArrayList<>();
public class Question {
int id;
int test;
String text;
ArrayList<Answers> answers = new ArrayList<>();
}
public class Answers {
int id;
int question;
String text;
int correct;
}
public DataModel parseResponce(JSONObject response) {
id = response.optInt("id");
name = response.optString("name");
JSONArray array = response.optJSONArray("questions");
parseQuestion(array);
return this;
}
public void parseQuestion(JSONArray questions) {
for (int i = 0; i < questions.length(); i++) {
JSONObject object = questions.optJSONObject(i);
Question question = new Question();
question.id = object.optInt("id");
question.test = object.optInt("test");
question.text = object.optString("text");
JSONArray array = object.optJSONArray("answers");
for (int j = 0; j < array.length(); j++) {
JSONObject answer = questions.optJSONObject(i);
Answers ans = new Answers();
ans.id = answer.optInt("id");
ans.question = answer.optInt("question");
ans.text = answer.optString("text");
ans.correct = answer.optInt("correct");
question.answers.add(ans);
}
this.questions.add(question);
}
}
}
Just call the parseResponce(JSONObject response) method and pass you response you will get question and answers inside the DataModel object;
try {
JSONObject data = new JSONObject(result);
int id = data.getInt("id");
String name=data.getString("name");
JSONArray list_question=data.getJSONArray("questions");
int length=list_question.length();
for (int i=0;i<length;i++){
JSONObject question=list_question.getJSONObject(i);
int question_id=question.getInt("id");
int test=question.getInt("test");
String question_text=question.getString("text");
JSONArray list_answer=question.getJSONArray("answers");
int lenght_answer=list_answer.length();
for (int j=0;i<lenght_answer;i++){
JSONObject answer=list_answer.getJSONObject(j);
int answer_id=answer.getInt("id");
int que=answer.getInt("question");
String answer_text=answer.getString("text");
int status=answer.getInt("correct");
}
}
}catch (JSONException ex){}
Try this
try
{
String id = response.getString("id");
String name = response.getString("name");
JSONArray questionsArray = response.getJSONArray("questions");
for(int i = 0; i <questionsArray.length(); i++)
{
JSONObject jsonObject = questionsArray.getJSONObject(i);
String sid = jsonObject.getString("id");
String stest = jsonObject.getString("test");
String stext = jsonObject.getString("text");
JSONArray answersArray = jsonObject.getJSONArray("answers");
for(int j=0; j<answersArray.length(); j++)
{
JSONObject jsonObjectAns = answersArray.getJSONObject(j);
String sidAns = jsonObject.getString("id");
String stextquestion = jsonObject.getString("question");
String stextAns = jsonObject.getString("text");
String scorrectAns = jsonObject.getString("correct");
}
}
} catch (JSONException e)
{
e.printStackTrace();
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.