2015-11-11 17 views
0

我有JSON對象:GSON deserializg單個對象

{ 
    user: 
    { 
     id: 1 
     avatar_url: "default.png" 
     first_name: "Example" 
     last_name: "User" 
     email: "[email protected]" 
    } 
} 

,我怎麼能反序列化這個對象由只具有類GSON:

public class User { 
    public long id; 
    public String avatar_url; 
    public String first_name; 
    public String last_name; 
    public String email; 
} 

是否有可能沒有創造新的類?

回答

0

是的,Gson允許您將字段反序列化爲簡單的HashMaps。您可以在您的父對象中執行以下操作:

@SerializedName("user") HashMap<String, String> user; 
... 
public String getFirstName() { 
    return (user != null) ? user.get("first_name"); 
} 

public Long getId() { 
    if (user != null && user.containsKey("id")) { 
     return Long.valueOf(user.get("id")); 
    } else { 
     return null; 
    } 
} 

依此類推。

0

(如果我深知,)你可以從JSON創建User類的實例,你需要定義一個建設者

public static User deserializeFromJson(final String userAsJson) throws JsonSyntaxException { 

     return new Gson().fromJson(userAsJson, User.class); 
} 

,並實現它想:

.... 一些地方,如果另一類。

String userJson = .... //get the json from somewhere 
try{ 
User myJsonUser = User.deserializeFromJson(userJson); 
.... 
+0

偏偏它僅適用於結構: '{ ID:1, avatar_url: 「爲Default.png」, 如first_name: 「實施例」, 姓氏: 「用戶」, 電子郵件:「用戶@ example.com「, }' – mac229