2016-09-27 49 views
0

我有一個JSON數組是這樣的:轉換的Json列出的Java

[ 
     {"_id": {"$oid":"57e9e4b1f36d281c4b330509"}, "user": "edmtdev" }, 
     {"_id": {"$oid":"57e9e4cec2ef164375c4c292"}, "user": "admin1234" }, 
     {"_id": {"$oid":"57ea1b0ac2ef164375c5ff1e"}, "username": "admin34" } 
    ] 

這是我User.class,用來存儲所有數據:

public class User{ 
     private Id id; 
     private String user; 

     public Id getId() { 
      return id; 
     } 

     public void setId(Id id) { 
      this.id = id; 
     } 

     public String getUser() { 
      return user; 
     } 

     public void setUser(String user) { 
      this.user = user; 
     } 
    } 

而且我Id.class,用於存儲ID :

public class Id { 

    private String $oid; 

    public String get$oid() { 
    return $oid; 
    } 


    public void set$oid(String $oid) { 
    this.$oid = $oid; 
    } 
} 

我使用GSON在Java中獲得我的用戶爲List<User>

List<User> users = new ArrayList<User>(); 
    Gson gson = new Gson(); 
    Type listType = new TypeToken<List<User>>(){}.getType(); 
    users = gson.fromJson(s,listType); 

問題是,我得到的用戶名有用戶名但沒有ID,$ oid沒有註冊。有人能幫助我理解這段代碼不起作用嗎?

private Id _id; 

,因爲你的JSON是_id,不id

+0

您使用的是CouchDB嗎?我認爲GSON並沒有將'_id'作爲一個字段登記,但我不確定。嘗試使用斷點調試模式來檢查您是否收到正確的對象。 –

+0

可能的重複[谷歌Gson - 反序列表對象? (泛型)](http://stackoverflow.com/questions/5554217/google-gson-deserialize-listclass-object-generic-type) – xenteros

回答

5

您必須通過替換用戶級ID。並在年底你的JSON字符串是錯誤的,是user,不username

+0

工作就像一個魅力!非常感謝你 – EddyLee

+0

不客氣。 – Numb

2
@SerializedName("_id") 
private Id id; 

這是另一種方法。
你也可以使用上面的註解。