我在将Android中的JSON字符串转换为对象时遇到问题。以下是JSON结构和Java类:
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);
当我反序列化JSON字符串时,代码和消息字段很好,但结果字段为空。 我还不熟悉Gson,所以请帮助解决这个问题?
提前致谢。
答案 0 :(得分:6)
可能result
字段为null,因为它依赖于Result
的类型参数。
来自Gson.fromJson(JsonElement, Class<T>)
的{{1}}(我是一个粗体):
此方法从指定的分析树反序列化Json读取 到指定类型的对象。 如果不适合使用 指定的类是泛型类型 ,因为它不具有泛型 由于Java的Type Erasure特性而输入类型信息。因此,如果所需类型是泛型类型,则不应使用此方法。请注意,如果指定对象的任何字段是泛型,则此方法可以正常工作,只是对象本身不应该是泛型类型。对于对象是泛型类型的情况,请调用
fromJson(JsonElement, Type)
。