Gson fromJson()返回具有null属性的对象

我正在尝试使用这一行创build一些Java对象:

Quiz currentQuiz = gson.fromJson(json, Quiz.class);

但我所得到的是这样的:

来自Json之后的测验对象

这是我的对象类:

测验:

 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输出。

Solutions Collecting From Web of "Gson fromJson()返回具有null属性的对象"

从你的json:我看到,在根本上是这样的

{quiz:{quizObject having ref,etc。}}}

所以,你需要降低一层使用gson开始分析。

所以,试试看,

 JSONObject quizObject = json.get("quiz"); Quiz currentQuiz = gson.fromJson(quizObject.toString(), Quiz.class); 

在我的情况下,我已经删除

 @SerializedName("OpCode") @Expose 

部分从我的模型类是上面的

 private Integer opCode; 

线。 所以Gson不能parsing它,所以我的属性是空的。 当我添加这些行,它修复。

尝试这个…

 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"); } } } }