我正在尝试使用这一行创建一些Java对象:
Quiz currentQuiz = gson.fromJson(json, Quiz.class);
但我得到的就是:
以下是我的对象类:
测验:
public class Quiz {
private String ref;
private String broadcast_dt;
private Question[] questions;
public Quiz() {
// TODO Auto-generated constructor stub
}
public String getRef() {
return ref;
}
public void setRef(String ref) {
this.ref = ref;
}
public String getBroadcast_dt() {
return broadcast_dt;
}
public void setBroadcast_dt(String broadcast_dt) {
this.broadcast_dt = broadcast_dt;
}
public Quiz(String ref, String broadcast_dt, Question[] questions) {
super();
this.ref = ref;
this.broadcast_dt = broadcast_dt;
this.questions = questions;
}
public Question[] getQuestions() {
return questions;
}
public void setQuestions(Question[] questions) {
this.questions = questions;
}
}
问题:
public class Question {
private int question_number;
private String question_text;
private Answer[] answers;
public Question(){
}
public Question(int question_number, String question_text, Answer[] answers) {
super();
this.question_number = question_number;
this.question_text = question_text;
this.answers = answers;
}
public int getQuestion_number() {
return question_number;
}
public void setQuestion_number(int question_number) {
this.question_number = question_number;
}
public String getQuestion_text() {
return question_text;
}
public void setQuestion_text(String question_text) {
this.question_text = question_text;
}
public Answer[] getAnswers() {
return answers;
}
public void setAnswers(Answer[] answers) {
this.answers = answers;
}
}
答案:
public class Answer {
private String answer_text;
private boolean correct_yn;
public Answer(){
}
public String getAnswer_text() {
return answer_text;
}
public void setAnswer_text(String answer_text) {
this.answer_text = answer_text;
}
public boolean isCorrect_yn() {
return correct_yn;
}
public void setCorrect_yn(boolean corrent_yn) {
this.correct_yn = corrent_yn;
}
}
这是我的JSON:
{
"quiz": {
"ref": "45g36745bu46",
"broadcast_dt": "2013-03-03T00:00:00Z",
"questions": [
{
"question_number": 1,
"question_text": "Example question one",
"answers": [
{
"answer_text": "Answer one",
"correct_yn": false
},
{
"answer_text": "Answer two",
"correct_yn": true
},
{
"answer_text": "Answer three",
"correct_yn": false
}
]
},
{
"question_number": 2,
"question_text": "Question number two",
"answers": [
{
"answer_text": "Something",
"correct_yn": false
},
{
"answer_text": "Something else",
"correct_yn": false
},
{
"answer_text": "Another thing",
"correct_yn": true
}
]
},
{
"question_number": 3,
"question_text": "And a third question with some additional question text appearing here.",
"answers": [
{
"answer_text": "Cow",
"correct_yn": false
},
{
"answer_text": "Pig",
"correct_yn": true
}
]
}
]
}
}
为什么会这样?我没有收到错误消息或LogCat输出。
答案 0 :(得分:17)
从你的json:我看到,在根级别它就像是
{quiz:{quizObject有ref等,}}
因此,您需要降低一级以使用gson开始解析。
所以,试试这个,
JSONObject quizObject = json.get("quiz");
Quiz currentQuiz = gson.fromJson(quizObject.toString(), Quiz.class);
答案 1 :(得分:1)
在我的情况下,我删除了
@SerializedName("OpCode")
@Expose
我的模型类中位于
之上的部分private Integer opCode;
线。所以Gson无法解析它,因此我的属性为null。当我添加这些线时,它就固定了。
答案 2 :(得分:-5)
试试这个......
JSONObject js = new JSONObject(jsonString);
for (int i = 0; i < js.length(); i++) {
JSONObject quiz = js.getJSONObject("quiz");
for (int j = 0; j < js.length(); j++) {
String broadcast_dt = quiz.getString("broadcast_dt");
String ref = quiz.getString("ref");
JSONArray questions = quiz.getJSONArray("questions");
for (int k = 0; k < questions.length(); k++) {
String value = questions.getString(k);
JSONObject quest = new JSONObject(questions.getString(k));
int question_number = quest.getInt("question_number");
String question_text = quest.getString("question_text");
JSONArray answers = quest.getJSONArray("answers");
for (int m = 0; m < answers.length(); m++) {
JSONObject ans = new JSONObject(answers.getString(m));
Boolean correct_yn = ans.getBoolean("correct_yn");
String answer_text = ans.getString("answer_text");
}
}
}
}