问题如下:
public class App {
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
String json = "[{\"uid\":1,\"username\":\"user1\",\"password\":\"user1\",\"type\":\"普通\"},"
+ "{\"uid\":2,\"username\":\"user2\",\"password\":\"user2\",\"type\":\"普通\"},"
+ "{\"uid\":3,\"username\":\"user3\",\"password\":\"user3\",\"type\":\"普通\"}]";
userList = jsonToBeanList(json, User.class);
// 这个地方报错:java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap
// cannot be cast to com.hezhujun.match.pojo.User
for (User user : userList) {
System.out.println(user);
}
}
public static <T> List<T> jsonToBeanList(String json, Class<T> clas) {
Gson gson = new Gson();
List<T> list = gson.fromJson(json, new TypeToken<List<T>>() {
}.getType());
// 这个地方可以正常打印
for (T t : list) {
System.out.println(t);
}
return list;
}
/* 运行之后控制台输出的信息
{uid=1.0, username=user1, password=user1, type=普通}
Exception in thread "main" {uid=2.0, username=user2, password=user2, type=普通}
{uid=3.0, username=user3, password=user3, type=普通}
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.hezhujun.match.pojo.User
at com.hezhujun.match.util.App.main(App.java:22)
*/
}