2012-03-18 53 views
1

我在將JSON字符串轉換爲Android中的對象時遇到問題。下面是JSON結構和Java類:Gson反序列化返回null

JSON:

{ 
"code":"SUCCEED", 
"message":"", 
"result":{ 
    "ccahUserId": 111, 
    "ccahUserName":"your_name", 
    "userFirstName":"your_first_name", 
    "userLastName":"your_last_name", 

    //others 
} 

Java類:

public class Result<T>{ 
    public String code; 
    public String message; 
    public T result; 
} 

public class DeviceSetting 
{ 
    public long ccahUserId; 
    public String ccahUserName; 
    public String userFirstName; 
    public String userLastName; 
    //other members 

} 

活動:

Gson gson = new Gson(); 
Result<DeviceSetting> setting = gson.fromJson(result, Result<DeviceSetting>.class); 

當我deserialise JSON字符串,代碼和消息字段很好,但結果字段爲空。 我對Gson還不熟悉,請幫忙解決這個問題?

在此先感謝。

回答

6

可能result字段爲空,因爲它依賴於Result的類型參數。

GSON documentationGson.fromJson(JsonElement, Class<T>)(粗體是礦):

這種方法反序列化JSON的從指定的解析樹 讀入指定的類型的對象。 如果 指定的類是通用類型,則它不適用,因爲它不具有通用的 類型信息,因爲Java的類型擦除功能。因此,如果所需類型是泛型類型,則不應使用此方法。請注意,如果指定對象的任何字段都是泛型,則此方法正常工作,只是對象本身不應該是泛型類型。對於對象爲泛型類型的情況,請調用fromJson(JsonElement, Type)

+0

感謝您的好意和善意的答案!你節省了我的時間。 – sunghun 2012-03-18 04:15:20

+0

@ user1090973:如果這回答您的問題,請務必勾選複選標記以選擇此答案。 – 2012-03-18 04:51:53