[英]How to parse this JSON in Java?
我目前正在为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");
像这样解析您的数据:
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对象内部获得问题和答案;
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
{
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.