我无法理解如何使用GSON为JSON转换设置类层次结构。
我的JSON看起来像:
{
"Users": {
"id": 1,
"name": "Jim",
"location": "Huntsville"
}
}
我的用户列表类似乎:
public class UserList {
public static List<User> Users;
@SuppressWarnings("static-access")
public void setUserList(List<User> userList){
this.Users = userList;
}
public List<User> getUserList(){
return Users;
}
}
最后是一个如下所示的用户类:
public class User {
private int id;
private String name;
private String location;
public int getId(){
return id;
}
public String getName(){
return name;
}
public String getLocation(){
return location;
}
public String toString(){
return("User: [id=" + id + "], [name=" + name + "], [location=" + location + "]");
}
}
有人介意给我一个正确的方向吗?我很感激!
编辑:
忘记显示我的解析代码..(只是从SDCard读取示例JSON文件)
BufferedReader br = new BufferedReader(new FileReader(Environment.getExternalStorageDirectory() + "/user.json"));
UserList userList = gson.fromJson(br, UserList.class);
答案 0 :(得分:1)
你确定你的JSON示例是正确的吗? 它似乎不是一个列表,只定义了一个用户。
此外,用户的getter和setter应该遵循get / set模式并被称为
public List<User> getUsers()
public void setUsers(List<User> users)
此外,您可以遵循小案例的Java惯例并指示Gson使用不同的大小写。 假设您的JSON中只有一个Users条目。如果您将Users属性更改为User而不是列表,则可以解析您提供的snippit。
@SerializedName("Users")
private User user;
因此,如果你想要一个用户列表,你应该在json中找到它,这应该让你把它解析为一个列表,注意你需要有对象,这些对象是封闭的,如:
{"users" : [{id:"one"}, ...]}
正如评论中指出的那样。