Java 从JSON到不带表名的对象
我试图非常简单地将JSON解析为对象(使用GSON) 我的JSON:Java 从JSON到不带表名的对象,java,android,json,gson,Java,Android,Json,Gson,我试图非常简单地将JSON解析为对象(使用GSON) 我的JSON: [{"username":"admin","password":"admin","name":"admin","email":"admin@admin.com"},{"username":"mark20","password":"mark123","name":"mark","email":"mark@steew.com"}] 有2个用户,所以我创建了2个类,用户和用户列表: public class Users {
[{"username":"admin","password":"admin","name":"admin","email":"admin@admin.com"},{"username":"mark20","password":"mark123","name":"mark","email":"mark@steew.com"}]
有2个用户,所以我创建了2个类,用户和用户列表:
public class Users {
ArrayList<User> users;
Users(ArrayList<User> users){
this.users = users;
}
}
这是我的解析代码:
public void onResponse(Call call, Response response) throws IOException {
String body = response.body().string();
Gson gson = new GsonBuilder().create();
Users users = gson.fromJson(body, Users.class);
}
当然,在variablebody
中,我得到了正确的JSON,但在最后一条通道中,我得到了:
JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY
这里有什么问题?如何修复它?您的json是一个
User
数组,而不是一个Users
数组User
的包装器
如下所示阅读您的json:
User[] users = gson.fromJson(body, User[].class);
如果需要阵列列表
:
如果我正确地阅读了其他地方阅读的内容,请尝试:
public void onResponse(Call call, Response response) throws IOException {
String body = response.body().string();
Gson gson = new GsonBuilder().create();
User[] users = gson.fromJson(body, User[].class);
}
List<User> userList = Arrays.asList(users);
Type listType = new TypeToken<ArrayList<User>>(){}.getType();
List<User> userList = gson.fromJson(body, listType);
public void onResponse(Call call, Response response) throws IOException {
String body = response.body().string();
Gson gson = new GsonBuilder().create();
User[] users = gson.fromJson(body, User[].class);
}