2012-03-18 180 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