Во-первых, вам нужно создать класс, проще сравнить объект
Эта ссылка может помочь вам преобразовать json в классы
https://www.site24x7.com/tools/json-to-java.html
Это сгенерированные классы
/ * * Чтобы изменить этот заголовок лицензии, выберите заголовки лицензий в свойствах проекта. * Чтобы изменить этот файл шаблона, выберите Инструменты | Шаблоны * и откройте шаблон в редакторе. * / package com.examen.overflow;
/**
*
* @author wilso
*/
public class Dto {
private Quiz quiz;
public Quiz getQuiz() {
return quiz;
}
public void setQuiz(Quiz quiz) {
this.quiz = quiz;
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.examen.overflow;
/**
*
* @author wilso
*/
public class Maths {
private Question q1;
private Question q2;
// Getter Methods
public Question getQ1() {
return q1;
}
public Question getQ2() {
return q2;
}
// Setter Methods
public void setQ1(Question q1) {
this.q1 = q1;
}
public void setQ2(Question q2) {
this.q2 = q2;
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.examen.overflow;
import java.util.List;
/**
*
* @author wilso
*/
public class Question {
private String answer;
private List<String> options;
private String question;
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
public List<String> getOptions() {
return options;
}
public void setOptions(List<String> options) {
this.options = options;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.examen.overflow;
/**
*
* @author wilso
*/
public class Quiz {
private Sport sport;
private Maths maths;
public Sport getSportObject() {
return sport;
}
public void setSportObject(Sport sport) {
this.sport = sport;
}
public Maths getMathsObject() {
return maths;
}
public void setMathsObject(Maths maths) {
this.maths = maths;
}
}
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.examen.overflow;
/**
*
* @author wilso
*/
public class Sport {
Question q1;
// Getter Methods
public Question getQ1() {
return q1;
}
// Setter Methods
public void setQ1(Question question) {
this.q1 = question;
}
}
Когда у вас есть классы, вам нужно только сделать следующее
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.examen.overflow;
import com.google.gson.Gson;
public class Convert {
public static void main(String[] args) {
String json = "{\n"
+ " \"quiz\": {\n"
+ " \"sport\": {\n"
+ " \"q1\": {\n"
+ " \"question\": \"Which one is correct team name in NBA?\",\n"
+ " \"options\": [\n"
+ " \"New York Bulls\",\n"
+ " \"Los Angeles Kings\",\n"
+ " \"Golden State Warriros\",\n"
+ " \"Huston Rocket\"\n"
+ " ],\n"
+ " \"answer\": \"Huston Rocket\"\n"
+ " }\n"
+ " },\n"
+ " \"maths\": {\n"
+ " \"q1\": {\n"
+ " \"question\": \"5 + 7 = ?\",\n"
+ " \"options\": [\n"
+ " \"10\",\n"
+ " \"11\",\n"
+ " \"12\",\n"
+ " \"13\"\n"
+ " ],\n"
+ " \"answer\": \"12\"\n"
+ " },\n"
+ " \"q2\": {\n"
+ " \"question\": \"12 - 8 = ?\",\n"
+ " \"options\": [\n"
+ " \"1\",\n"
+ " \"2\",\n"
+ " \"3\",\n"
+ " \"4\"\n"
+ " ],\n"
+ " \"answer\": \"4\"\n"
+ " }\n"
+ " }\n"
+ " }\n"
+ "}";
Dto quiz = new Gson().fromJson(json, Dto.class);
System.out.println(quiz);
//Iterate object
for (String option : quiz.getQuiz().getMathsObject().getQ1().getOptions()) {
System.out.println(option);
}
}
}