2013-04-10 54 views
2

我正在嘗試使用GSON將一些JSON解析爲Java對象。我的json在這裏:http://ec2-50-112-212-186.us-west-2.compute.amazonaws.com/ske.json將JSON解析爲Java bean - 列表剩餘空

而以下是我的Java bean。我的JsonGen的幫助下創造了它:

package ske.entities; 

import java.util.List; 

public class WordSketch{ 

    private List<Gramrels> gramrels; 
    private String corp_full_name; 

    public String getCorp_full_name() { 
     return corp_full_name; 
    } 
    public void setCorp_full_name(String corp_full_name) { 
     this.corp_full_name = corp_full_name; 
    } 
    public List<Gramrels> getGramrels(){ 
     return this.gramrels; 
    } 
    public void setGramrels(List<Gramrels> gramrels){ 
     this.gramrels = gramrels; 
    } 

    public static class Gramrels { 

     private List<Words> words; 
     private Number count; 
     private String name; 
     private Number score; 
     private Number seek; 

     public List<Words> getWords(){ 
      return this.words; 
     } 
     public void setWords(List<Words> words){ 
      this.words = words; 
     } 
     public Number getCount(){ 
      return this.count; 
     } 
     public void setCount(Number count){ 
      this.count = count; 
     } 
     public String getName(){ 
      return this.name; 
     } 
     public void setName(String name){ 
      this.name = name; 
     } 
     public Number getScore(){ 
      return this.score; 
     } 
     public void setScore(Number score){ 
      this.score = score; 
     } 
     public Number getSeek(){ 
      return this.seek; 
     } 
     public void setSeek(Number seek){ 
      this.seek = seek; 
     } 
    } 

    public static class Words { 
     private Number count; 
     private Number id; 
     private String lempos; 
     private Number score; 
     private Number seek; 
     private String word; 

     public Number getCount(){ 
      return this.count; 
     } 
     public void setCount(Number count){ 
      this.count = count; 
     } 
     public Number getId(){ 
      return this.id; 
     } 
     public void setId(Number id){ 
      this.id = id; 
     } 
     public String getLempos(){ 
      return this.lempos; 
     } 
     public void setLempos(String lempos){ 
      this.lempos = lempos; 
     } 
     public Number getScore(){ 
      return this.score; 
     } 
     public void setScore(Number score){ 
      this.score = score; 
     } 
     public Number getSeek(){ 
      return this.seek; 
     } 
     public void setSeek(Number seek){ 
      this.seek = seek; 
     } 
     public String getWord(){ 
      return this.word; 
     } 
     public void setWord(String word){ 
      this.word = word; 
     } 
    } 
} 

然而,當我打電話WordSketch gramrels = gson.fromJson(new InputStreamReader(response.getEntity().getContent()), WordSketch.class);corp_full_name充滿但是gramrels爲空。我究竟做錯了什麼?

這是我第一次使用JSON,所以我還是很陌生。

謝謝,

回答

3

我認爲你的問題只是該字段的名稱。

在你的班級名稱是「gramrels」,但在你的JSON響應中,它是「Gramrels」(大寫)。程序和JSON中變量的名稱必須相同,因爲GSON允許您僅從JSON響應中獲取您感興趣的那些字段...因此,如果它在響應中找到JSON值不符合您的任何類別屬性,GSON只是忽略該值。

我建議你使用註釋@SerializedName,以這樣的方式

@SerializedName("Gramrels") 
private List<Gramrels> gramrels; 

這樣你可以保持您的小寫屬性的名稱,下面的Java命名約定,但你告訴GSON的這個參數在你的JSON響應將對應於「Gramrels」的名字......

你也可以做同樣的你的其他變量,例如:

@SerializedName("corp_full_name") 
private String corpFullName; 

,因爲corp_full_name不遵循Java命名約定...

+0

現貨!謝謝! – 2013-04-11 12:41:39