我目前正在为android开发一个测试应用程序,需要解析JSON测试数据。
JSON如下:
{"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}]}]}
我需要提取问题及其子数据。
我尝试的是:
JSONObject jObject = new JSONObject(result);
String test = jObject.getJSONObject("id").getJSONArray("questions").toString();
和
String myString = jObject .getJSONObject("questions").getJSONObject("answers").getString("text");
答案 0 :(得分:0)
像这样解析您的数据:
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);
}
}
}
只需调用parseResponce(JSONObject response)方法并将您的响应传递给您,您将在DataModel对象内部获得问题和答案;
答案 1 :(得分:0)
attributes
答案 2 :(得分:0)
尝试一下
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();
}