我正在尝试使用Gson
根据某些User
实例化JSON
对象,并在class
中定义String
。但是,它无法正常工作。
错误Netbeans
给出的是以下
这是代码
Class<?> myClass = Class.forName("User");
Gson gson = new Gson();
User user = gson.fromJson(json, myClass);
我的做法出了什么问题?
编辑:我试图这样做的原因是因为我不知道编译时的类型
答案 0 :(得分:1)
只需使用:
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);
或者如果您不知道类型:
Gson gson = new Gson();
Object obj = gson.fromJson(json, Class.forName("User"));
您获得的错误与泛型有关 - 返回类型是从您为其指定返回值的变量类型推断出来的。然后将此推断类型与类参数一起使用。
public <T> T fromJson(String json, Class<T> classOfT)
更改返回值分配给Object
的变量类型意味着类参数将为Class<?>
类型,并且编译器很满意。
答案 1 :(得分:0)
Class<User> myClass = Class.forName("User");
或
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);