У меня есть задание создать что-то похожее на викторину. Учитель дал нам все интерфейсы для Вопросы и Тест и даже "графический слой" для отображения теста .
Я создал два класса для интерфейсов Тест и Вопрос. Тестовый класс имеет объект listArray of Questions вместе с другими атрибутами. Класс Question содержит атрибуты, которые можно увидеть в файле JSON (заголовок, оценка, оценка и т. Д.).
Чтобы прочитать файл Json, я создал метод «loadfromJsonFile», и он прекрасно печатает файл, но я не могу понять, как связать каждый объект вопроса из файла с arrayList.
Файл Json:
[
{
"type": "MultipleChoice",
"question": {
"title": "Question 1",
"score": 4,
"mark": 5,
"question_description": "The ability of an object to take on many forms is:",
"options": [
"Polymorphism",
"Encapsulation",
"Design Patter",
"Does not Exist"
],
"correct_answer": "Polymorphism"
}
},
{
"type": "MultipleChoice",
"question": {
"title": "Question 2",
"score": 4,
"mark": 5,
"question_description": "The bundling of data with the methods that operate on that data is:",
"options": [
"Polymorphism",
"Encapsulation",
"Design Patter",
"Does not Exist"
],
"correct_answer": "Encapsulation"
}
},
{
"type": "YesNo",
"question": {
"title": "Question 3",
"score": 4,
"mark": 5,
"question_description": "Object Oriented Programming is exclusive to the JAVA programming language",
"correct_answer": "no"
}
},
{
"type": "Numeric",
"question": {
"title": "Question 4",
"score": 4,
"mark": 5,
"question_description": "How many programming languages are taught in Paradigmas de Programação?",
"correct_answer": "1"
}
}]
Код для чтения файла Json:
public boolean loadFromJSONFile(String s) throws TestException {
String path = "teste_A.json";
BufferedReader reader = null;
try{
reader = new BufferedReader(new FileReader(path));
JsonStreamParser p = new JsonStreamParser(reader);
JsonArray arr = (JsonArray) p.next();
for(int i=0;i<arr.size();i++){
System.out.println("--------------------------------------Question"+i+"--------------------------------------------");
JsonElement arrayElement = arr.get(i);
JsonObject obj = arrayElement.getAsJsonObject();
String type=obj.get("type").getAsString();
System.out.println("Type: " + type);
JsonObject list =obj.get("question").getAsJsonObject();
String title=list.get("title").getAsString();
System.out.println("Title: " + title);
int score=list.get("score").getAsInt();
System.out.println("Score: " + score);
int mark=list.get("mark").getAsInt();
System.out.println("Mark: " + mark);
String Description=list.get("question_description").getAsString();
System.out.println("Description: " + Description);
JsonArray opt = list.getAsJsonArray("options");
if(opt!=null){
System.out.println("Options: \n");
for (int j = 0; j < opt.size(); j++) {
JsonPrimitive value = opt.get(j).getAsJsonPrimitive();
System.out.print(" Option"+ (j+1) +": "+ value.getAsString()+ " \n");
}
System.out.println("\n");
}
String CorrectAnswer = list.get("correct_answer").getAsString();
System.out.println("Correct: " + CorrectAnswer);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
reader.close();
}catch (IOException ex){
ex.printStackTrace();
}
}
return false;
}